{"error":null,"errorMessage":null,"response":{"700427":{"id":"700427","revisionID":"56417","dateCreated":"1489004838","dateModified":"1489004841","sourceControlBaseRevision":"edc467722dae0db815049e97a9cad894aa2d8614","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - disable postinstall hook","unitStatus":"1","lintStatus":"3","changes":[{"id":"9272953","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5236","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5236","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\n+\n+\"@angular\/cli@1.0.0-rc.1\":\n+ version \"1.0.0-rc.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.1.tgz#102b2bf47a9d74a581d6d1821ce2daf0594d3145\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.12\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\", \"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.12\":\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.12.tgz#19142e760a30172806acc7363e590d870cb30c26\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^1.0.2\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@1.3.3, accepts@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@1.1.2, colors@^1.1.0, colors@^1.1.2, colors@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@2.9.x, commander@^2.9.0:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+\"cssnano@>=2.6.1 <4\", cssnano@^3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@2, debug@2.6.1, debug@^2.1.3, debug@^2.2.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@2.2.0, debug@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@1.1.0, depd@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@3, extend@^3.0.0, extend@~3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@1.0.0, finalhandler@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@3.3.2, json3@^3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@1.3.4, mime@1.3.x, mime@^1.2.11, mime@^1.3.4:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+\"minimatch@2 || 3\", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2:\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+mkdirp@0.5.x, \"mkdirp@>=0.5 0\", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+\"nopt@2 || 3\", nopt@~3.0.6:\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+\"npmlog@0 || 1 || 2 || 3 || 4\", npmlog@^4.0.0, npmlog@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@4.1.0, object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@0, osenv@^0.1.0, osenv@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+q@1.4.1, q@^1.1.2, q@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@6.3.1, qs@~6.3.0:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@1.0, readable-stream@~1.0.2:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@2, request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+\"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0:\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@0.1.x, source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@X.X.X, through@^2.3.6:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28, tmp@0.0.x:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@^0.0.31:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+uglify-js@2.8.x, uglify-js@^2.6, uglify-js@^2.7.5:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@1.0.0, unpipe@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@0.10.3, util@^0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@1, which@^1.2.1, which@^1.2.9:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@1.1.1, ws@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xmlbuilder@>=1.0.0, xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n"}]},{"id":"9272952","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272951","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9272950","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9272949","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.key","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN RSA PRIVATE KEY-----\n+MIICWwIBAAKBgQCmipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LV\n+g\/kgt79am1bnF+\/HF880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R\n+1uHyD\/46sYtMejy3n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQAB\n+AoGATqG34hCSf11mWDUPNXjuCcz8eLF8Ugab\/pMngrPR2OWOSKue4y73jmITYBVd\n+96iOlqMAOxpmfFp\/R81PIHdi++Bax1NfSBT8tK0U7HHzkbHEXyvHiBSug78Y14h8\n+Y\/NMZXEvVapY7lapr5ZgOSf2rcKOlceMRsoohl6bGc+55BECQQDPZTw5WxDDe7\/W\n+oYzHy7abLw+A92cP8A6qlwXBik9ko6jtYXvoI454OIr6RsHoFPU9bUkx5G1fvOUZ\n+J3sxfxMZAkEAzZJEwcvmxHizX\/2NZZ8LvVyWGpao07bBcAEvDXDZFOZqKUujukOe\n+iilQD6JZDJTmW9RJmOgdQKeL9ZaTlX3MqwJASMJrbnPUXcB8fQAQM8f0OF06QzSI\n+o77EZnS1QEEVuWjxStZ4ceiHgwXTPBq2zIUNxI8irq5E8OGEPl7riWHbgQJARzqL\n+QGsaRrFb1cLRH4kAVFikWgoh7VnBpMGEQC\/9x9QerLhcvsl3QYAXEZO7LzTYrLDd\n+33Ft0V08jZfjA0VXiQJAOwX6glfDKf79AK1sifFQc\/v0Yu87LIOAwp0zLlsnO0Q9\n+xQV3TdjlNQebfTG+Uw1tmbcCb2wcGFfD199IHpAzIA==\n+-----END RSA PRIVATE KEY-----\n"}]},{"id":"9272948","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.crt","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN CERTIFICATE-----\n+MIICAzCCAWwCCQDlm49KXF45gzANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJB\n+VTETMBEGA1UECBMKU29tZS1TdGF0ZTEQMA4GA1UEChMHR3J1bnRKUzEQMA4GA1UE\n+AxMHMC4wLjAuMDAeFw0xNDAyMTkyMzE1NDRaFw0xNTAyMTkyMzE1NDRaMEYxCzAJ\n+BgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRAwDgYDVQQKEwdHcnVudEpT\n+MRAwDgYDVQQDEwcwLjAuMC4wMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm\n+ipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LVg\/kgt79am1bnF+\/H\n+F880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R1uHyD\/46sYtMejy3\n+n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQABMA0GCSqGSIb3DQEB\n+BQUAA4GBADnTBlN7+Aa8zj2zsUBSUv9w7iYut3ZDvrEY+IJt8EurwA6+Q7rQqVsY\n+an5ztiEESriWvqNIfvWb+Yekhv9sISJFMfApVbimmT6QseQcFEIlRNW5cfukHQVH\n+9dBI7upQO2vN7N9ABo4a3aBANMBxIvCnE+adiqNOTJF\/8qkiAFY9\n+-----END CERTIFICATE-----\n"}]},{"id":"9272947","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9272946","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9272945","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9272944","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9272943","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9272942","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272941","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9272940","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+\n+\n+ \n+ Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9272939","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-foteq5ktojvmokfnvvdw"},"oldPath":"webapp\/src\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272938","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const environment = {\n+ production: false,\n+ gafBaseUrl: 'https:\/\/laurent.syd1.fln-dev.net',\n+ authConfig: {\n+ baseUrl: `https:\/\/laurent.syd1.fln-dev.net\/auth`,\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/api`,\n+ ajaxBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/ajax`,\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n"}]},{"id":"9272937","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272936","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9272935","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272934","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+import 'rxjs\/add\/observable\/merge';\n+import 'rxjs\/add\/observable\/from';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/merge';\n+import 'rxjs\/add\/operator\/mergeMap';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/pluck';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n+import 'rxjs\/add\/operator\/multicast';\n+import 'rxjs\/add\/operator\/scan';\n+import 'rxjs\/add\/operator\/take';\n"}]},{"id":"9272933","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.assign(`${environment.gafBaseUrl}${state.url}`);\n+ return false;\n+ }\n+}\n"}]},{"id":"9272932","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"55","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"55","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ template: `\n+ <div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+\n+ <!-- <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>-->\n+ <\/div>\n+ `,\n+})\n+export class ThreadComponent {\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.messages = this.datastore.list(\n+ 'messages',\n+ this.route.params.map(({threadId}) => threadId), {\n+ query: {\n+ limit: 10\n+ }\n+ }\n+ );\n+ }\n+\n+ sendMessage(message: string) {\n+ this.auth.switchMap(({uid}) =>\n+ this.messages.push({\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ busy: true,\n+ from_user: uid.toString()\n+ })\n+ ).toPromise();\n+ }\n+}\n"}]},{"id":"9272931","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9272930","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9272929","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread.thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9272928","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9272927","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+\n+ <fl-user-avatar [src]=\"thread.owner.avatar\"\n+ class=\"avatar\">\n+ <\/fl-user-avatar>\n+ <div class=\"body\">\n+ <div class=\"body-content-username\"\n+ *ngFor=\"let member of thread.members; let $last = last;\">\n+ {{ member.username }}<span *ngIf=\"!$last\">,<\/span>\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{ thread.message.message }}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9272926","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"33","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9272925","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9272924","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9272923","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9272922","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9272921","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9272920","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9272919","metadata":{"line:first":1,"copy:lines":{"47":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"48":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"49":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"50":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"50","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"50","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ThreadComponent,\n+ EmptyThreadComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n"}]},{"id":"9272918","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"70","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"70","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Thread } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <router-outlet><\/router-outlet>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ \/\/threadsUnreadCount: ObjectObservable<ThreadUnreadCount>;\n+ threadsLimit = new Subject<number>();\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ const uid = this.auth.map(({uid}) => uid.toString());\n+ this.threads = this.datastore.list('threads', uid, {\n+ query: {\n+ limit: this.threadsLimit\n+ .startWith(10)\n+ .scan((acc, curr) => acc + curr)\n+ }\n+ }\n+ );\n+ \/\/this.threadsUnreadCount = this.datastore.list('threadsUnreadCount', uid);\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.next(count);\n+ }\n+\n+ createThread() {\n+ \/\/this.threads.push(...);\n+ }\n+\n+}\n"}]},{"id":"9272917","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9272916","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",3,"-"],"7":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",6,"-"],"8":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",7,"-"],"9":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",8,"-"],"10":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",9,"-"],"24":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",16,"-"],"25":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",17,"-"],"26":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",18,"-"],"27":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",19,"-"],"28":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",20,"-"],"29":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",21,"-"],"30":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",25,"-"],"31":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",26,"-"],"32":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",27,"-"],"33":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",28,"-"],"34":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",29,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { RouterModule, Routes } from '@angular\/router';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { AuthGuard } from '..\/auth-guard.service';\n+\n+const messagingInboxRoutes: Routes = [\n+ {\n+ path: '',\n+ canActivate: [AuthGuard],\n+ component: MessagingInboxComponent,\n+ children: [\n+ {\n+ path: '',\n+ component: EmptyThreadComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: ThreadComponent\n+ }\n+ ]\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forChild(messagingInboxRoutes),\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class MessagingInboxRoutingModule { }\n"}]},{"id":"9272915","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message of messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9272914","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9272913","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9272912","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9272911","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message = new EventEmitter<string>();\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9272910","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9272909","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9272908","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9272907","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/empty-thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: `\n+ <div>\n+ NO THREAD SELECTED\n+ <\/div>\n+ `,\n+})\n+export class EmptyThreadComponent {\n+\n+}\n"}]},{"id":"9272906","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9272905","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9272904","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9272903","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9272902","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.uid) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9272901","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9272900","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9272899","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9272898","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"35","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"35","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n"}]},{"id":"9272897","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9272896","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/user-avatar.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular\/core';\n+@Component({\n+ selector: 'fl-user-avatar',\n+ template: `\n+ <img [src]=\"avatarUrl\" \/>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class UserAvatarComponent implements OnChanges {\n+ private avatarUrl: string;\n+ @Input() src: string;\n+\n+ constructor() {}\n+\n+ ngOnChanges() {\n+ if (this.src) {\n+ this.avatarUrl = `https:\/\/laurent.syd1.fln-dev.net${this.src}`;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9272895","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272894","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n+import { UserAvatarComponent } from '.\/user-avatar.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9272893","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9272892","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9272891","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9272890","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+\n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+\n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+\n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+\n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+\n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+\n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver;\n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9272889","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9272888","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9272887","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9272886","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9272885","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9272884","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9272883","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9272882","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9272881","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use\n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+\n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9272880","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/verification-banner\/verificationBanner.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface VerificationBanners {\n+ [userId: string]: VerificationBanner\n+}\n+\n+export interface VerificationBanner {\n+ email: string;\n+ params: string; \/\/ \"id=15540180&key=8656f81647a32f8331bea7921d0cef14dc9929e8\"\n+ showPhoneVerifyBanner: boolean;\n+ show_resend_btn: boolean;\n+ type_of_notif: string; \/\/ \"email\"\n+ username: string; \/\/ \"laurent\"\n+}\n"}]},{"id":"9272879","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9272878","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Thread, ThreadUnreadCount } from '.\/thread.model';\n+\n+export const threadReducer = (\n+ state: Readonly<{ [userId: string]: Entities<Thread> }> = {},\n+ action: Action\n+): Readonly<{ [userId: string]: Entities<Thread> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ console.log('threadReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ Denoramlize the Thread API response\n+ const contextDetails = data.context_details;\n+ const users = data.users;\n+ const threads = data.threads.reduce((acc: any, thread: any) => {\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.project = contextDetails.projects[context.id];\n+ } else {\n+ context.contest = contextDetails.contests[context.id];\n+ }\n+ context.id = undefined;\n+ const members = thread.thread.members.map((memberId: number) => {\n+ return { ...users[memberId], ...{\n+ \/\/ Avatar CDN URLs returned by the API are crap\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ });\n+ const owner = { ...users[thread.thread.owner], ...{\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ const threadInner = { ...thread.thread, context, members, owner };\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ acc[thread.id] = { ...thread , ...{ thread: threadInner }, messages };\n+ return acc;\n+ }, {});\n+\n+ return mergeEntities(state, threads, ref);\n+\n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n+export const threadUnreadCountReducer =\n+ (state: Entities<ThreadUnreadCount> = {}, action: Action): Entities<ThreadUnreadCount> => {\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ return mergeEntities(state, data.unread_thread_count, ref);\n+ return state;\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9272877","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface ThreadUnreadCount {\n+ unread_thread_count: number;\n+}\n+\n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ type: 'project' | 'contest';\n+ contest?: any;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD\n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9272876","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"73","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"73","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+import { RootModel } from '.\/root.model';\n+\n+import { Thread, ThreadUnreadCount } from '.\/thread\/thread.model';\n+import { threadReducer, threadUnreadCountReducer } from '.\/thread\/thread.reducer';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+\n+import { Observable } from 'rxjs\/Observable';\n+\n+export interface Reference {\n+ path: Path;\n+ query: Query;\n+}\n+\n+export type Path = [keyof RootModel, string];\n+\n+export interface Query {\n+ limit?: number;\n+ offset?: number;\n+}\n+\n+export interface Action {\n+ type: ActionType;\n+ payload?: {\n+ data: any;\n+ ref: Reference;\n+ }\n+}\n+\n+export type ActionType = 'API_FETCH_SUCCESS'\n+ | 'API_POST'\n+ | 'API_POST_SUCCESS';\n+\n+export interface Entities<T> {\n+ entities?: {\n+ [id: string]: T;\n+ };\n+ lists?: {\n+ [query: string]: T[];\n+ };\n+};\n+\n+export const mergeEntities = (state: any, entities: any, ref: Reference) => {\n+ const data = state[ref.path[1]] || {};\n+ const query = 'default';\n+ return { ...state, ...{\n+ [ref.path[1]]: {\n+ entities: {\n+ ...data.entities,\n+ ...entities\n+ },\n+ lists: {\n+ ...data.lists,\n+ ...{\n+ [query]: Object.keys(entities).reduce((acc, id, index) => {\n+ acc[(ref.query.offset || 0) + index] = id;\n+ return acc;\n+ }, data.lists ? ([...data.lists[query]] || []) : [])\n+ }\n+ }\n+ }\n+ }};\n+};\n+\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ threadsUnreadCount: threadUnreadCountReducer,\n+ messages: messageReducer,\n+});\n"}]},{"id":"9272875","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/root.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface RootModel {\n+ threads: {\n+ [userId: string]: Thread;\n+ },\n+ threadsUnreadCount: {\n+ [userId: string]: ThreadUnreadCount\n+ },\n+ messages: {\n+ [threadId: string]: Message;\n+ }\n+};\n"}]},{"id":"9272874","metadata":[],"oldPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","currentPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272873","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Message } from '.\/message.model';\n+\n+export const messageReducer = (\n+ state: Readonly<{ [threadId: string]: Entities<Message> }> = {},\n+ action: Action\n+): Readonly<{ [threadId: string]: Entities<Message> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'messages') {\n+ console.log('messageReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS': {\n+ const { data, ref } = action.payload;\n+ const messages = data.messages.reduce((acc: any, message: any) => {\n+ acc[message.id] = message;\n+ return acc;\n+ }, {});\n+ return mergeEntities(state, messages, ref);\n+ }\n+\n+ case 'API_POST': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ case 'API_POST_SUCCESS': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ \/*case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9272872","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n"}]},{"id":"9272871","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9272870","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"45","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"45","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Reference, Action } from '.\/store';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+import { backend } from '.\/backend';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private ref$: any,\n+ private apiHttp: ApiHttp,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.ref$, this.apiHttp, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ push(body: Object): Observable<boolean> {\n+ console.log('push', body);\n+ return this.ref$.take(1)\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ return Observable.of((<any>backend)[path[0]].post(path[1]))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST',\n+ payload: { data, ref }\n+ }))\n+ .switchMap((config) => this.apiHttp.post(config, body))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST_SUCCESS',\n+ payload: { data, ref }\n+ }))\n+ })\n+ .mapTo(true)\n+ }\n+\n+}\n"}]},{"id":"9272869","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/languages-domains\/languages-domains.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface LanguagesDomains {\n+\n+\n+}\n+\n+{\"status\":\"success\",\"data\":{\"languages\":[{\"id\":\"4\",\"code\":\"af\",\"name\":\"Afrikaans\",\"englishName\":\"Afrikaans\",\"iso6391\":\"af\",\"iso6392\":\"afr\",\"active\":true},{\"id\":\"19\",\"code\":\"bn\",\"name\":\"\\u09ac\\u09be\\u0982\\u09b2\\u09be\",\"englishName\":\"Bengali\",\"iso6391\":\"bn\",\"iso6392\":\"ben\",\"active\":true},{\"id\":\"23\",\"code\":\"ca\",\"name\":\"Catal\\u00e0\",\"englishName\":\"Catalan\",\"iso6391\":\"ca\",\"iso6392\":\"cat\",\"active\":true},{\"id\":\"28\",\"code\":\"cs\",\"name\":\"\\u010ce\\u0161tina\",\"englishName\":\"Czech\",\"iso6391\":\"cs\",\"iso6392\":\"ces\",\"active\":true},{\"id\":\"32\",\"code\":\"da\",\"name\":\"Dansk\",\"englishName\":\"Danish\",\"iso6391\":\"da\",\"iso6392\":\"dan\",\"active\":true},{\"id\":\"33\",\"code\":\"de\",\"name\":\"Deutsch\",\"englishName\":\"German\",\"iso6391\":\"de\",\"iso6392\":\"deu\",\"active\":true},{\"id\":\"37\",\"code\":\"el\",\"name\":\"\\u03b5\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac\",\"englishName\":\"Greek, Modern\",\"iso6391\":\"el\",\"iso6392\":\"ell\",\"active\":true},{\"id\":\"38\",\"code\":\"en\",\"name\":\"English\",\"englishName\":\"English\",\"iso6391\":\"en\",\"iso6392\":\"eng\",\"active\":true},{\"id\":\"40\",\"code\":\"es\",\"name\":\"Espa\\u00f1ol\",\"englishName\":\"Spanish\",\"iso6391\":\"es\",\"iso6392\":\"spa\",\"active\":true},{\"id\":\"45\",\"code\":\"fi\",\"name\":\"Suomi\",\"englishName\":\"Finnish\",\"iso6391\":\"fi\",\"iso6392\":\"fin\",\"active\":true},{\"id\":\"46\",\"code\":\"fil\",\"name\":\"Filipino\",\"englishName\":\"Filipino\",\"iso6391\":\"\",\"iso6392\":\"fil\",\"active\":true},{\"id\":\"49\",\"code\":\"fr\",\"name\":\"Fran\\u00e7ais\",\"englishName\":\"French\",\"iso6391\":\"fr\",\"iso6392\":\"fra\",\"active\":true},{\"id\":\"60\",\"code\":\"hi\",\"name\":\"\\u0939\\u093f\\u0928\\u094d\\u0926\\u0940\",\"englishName\":\"Hindi\",\"iso6391\":\"hi\",\"iso6392\":\"hin\",\"active\":true},{\"id\":\"64\",\"code\":\"hu\",\"name\":\"Magyar\",\"englishName\":\"Hungarian\",\"iso6391\":\"hu\",\"iso6392\":\"hun\",\"active\":true},{\"id\":\"68\",\"code\":\"id\",\"name\":\"Bahasa Indonesia\",\"englishName\":\"Indonesian\",\"iso6391\":\"id\",\"iso6392\":\"ind\",\"active\":true},{\"id\":\"75\",\"code\":\"it\",\"name\":\"Italiano\",\"englishName\":\"Italian\",\"iso6391\":\"it\",\"iso6392\":\"ita\",\"active\":true},{\"id\":\"77\",\"code\":\"ja\",\"name\":\"\\u65e5\\u672c\\u8a9e\",\"englishName\":\"Japanese\",\"iso6391\":\"ja\",\"iso6392\":\"jpn\",\"active\":true},{\"id\":\"87\",\"code\":\"ko\",\"name\":\"\\ud55c\\uad6d\\uc5b4\",\"englishName\":\"Korean\",\"iso6391\":\"ko\",\"iso6392\":\"kor\",\"active\":true},{\"id\":\"109\",\"code\":\"ms\",\"name\":\"Bahasa Malaysia\",\"englishName\":\"Malay\",\"iso6391\":\"ms\",\"iso6392\":\"msa\",\"active\":true},{\"id\":\"113\",\"code\":\"nb\",\"name\":\"Norsk-Bokm\\u00e5l\",\"englishName\":\"Norwegian Bokm\\u00e5l\",\"iso6391\":\"nb\",\"iso6392\":\"nob\",\"active\":true},{\"id\":\"118\",\"code\":\"nl\",\"name\":\"Nederlands\",\"englishName\":\"Dutch\",\"iso6391\":\"nl\",\"iso6392\":\"nld\",\"active\":true},{\"id\":\"132\",\"code\":\"pl\",\"name\":\"Polski\",\"englishName\":\"Polish\",\"iso6391\":\"pl\",\"iso6392\":\"pol\",\"active\":true},{\"id\":\"134\",\"code\":\"pt\",\"name\":\"Portugu\\u00eas\",\"englishName\":\"Portuguese\",\"iso6391\":\"pt\",\"iso6392\":\"por\",\"active\":true},{\"id\":\"138\",\"code\":\"ro\",\"name\":\"Rom\\u00e2n\\u0103\",\"englishName\":\"Romanian\",\"iso6391\":\"ro\",\"iso6392\":\"ron\",\"active\":true},{\"id\":\"139\",\"code\":\"ru\",\"name\":\"\\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439\",\"englishName\":\"Russian\",\"iso6391\":\"ru\",\"iso6392\":\"rus\",\"active\":true},{\"id\":\"148\",\"code\":\"sl\",\"name\":\"Sloven\\u0161\\u010dina\",\"englishName\":\"Slovenian\",\"iso6391\":\"sl\",\"iso6392\":\"slv\",\"active\":true},{\"id\":\"152\",\"code\":\"sq\",\"name\":\"Shqip\",\"englishName\":\"Albanian\",\"iso6391\":\"sq\",\"iso6392\":\"sqi\",\"active\":true},{\"id\":\"157\",\"code\":\"sv\",\"name\":\"Svenska\",\"englishName\":\"Swedish\",\"iso6391\":\"sv\",\"iso6392\":\"swe\",\"active\":true},{\"id\":\"158\",\"code\":\"sw\",\"name\":\"Kiswahili\",\"englishName\":\"Swahili\",\"iso6391\":\"sw\",\"iso6392\":\"swa\",\"active\":true},{\"id\":\"163\",\"code\":\"th\",\"name\":\"\\u0e20\\u0e32\\u0e29\\u0e32\\u0e44\\u0e17\\u0e22\",\"englishName\":\"Thai\",\"iso6391\":\"th\",\"iso6392\":\"tha\",\"active\":true},{\"id\":\"171\",\"code\":\"tr\",\"name\":\"T\\u00fcrk\\u00e7e\",\"englishName\":\"Turkish\",\"iso6391\":\"tr\",\"iso6392\":\"tur\",\"active\":true},{\"id\":\"178\",\"code\":\"uk\",\"name\":\"\\u0423\\u043a\\u0440\\u0430\\u0457\\u043d\\u0441\\u044c\\u043a\\u0430\",\"englishName\":\"Ukrainian\",\"iso6391\":\"uk\",\"iso6392\":\"ukr\",\"active\":true},{\"id\":\"182\",\"code\":\"vi\",\"name\":\"Ti\\u1ebfng Vi\\u1ec7t\",\"englishName\":\"Vietnamese\",\"iso6391\":\"vi\",\"iso6392\":\"vie\",\"active\":true},{\"id\":\"190\",\"code\":\"zh\",\"name\":\"\\u4e2d\\u6587(\\u7b80\\u4f53)\",\"englishName\":\"Chinese\",\"iso6391\":\"zh\",\"iso6392\":\"zho\",\"active\":true}],\"domains\":[{\"name\":\"North America\",\"domains\":[{\"id\":\"1\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\",\"pattern\":\"\\\/freelancer.com$\\\/\",\"name\":\"US (International)\",\"info\":\"Go to global site\",\"info_selected\":\"Stay in US\",\"flag_small\":\"us.png\",\"flag_big\":\"us-big.png\",\"sequence\":\"200\",\"short_name\":\"usa\",\"domain_switcher_region_name\":\"North America\",\"current\":true},{\"id\":\"9\",\"domain_name\":\"freelancer.ca\",\"url\":\"https:\\\/\\\/www.freelancer.ca\",\"pattern\":\"\\\/freelancer.ca$\\\/\",\"name\":\"Canada\",\"info\":\"Go to CA site\",\"info_selected\":\"Stay in CA\",\"flag_small\":\"ca.png\",\"flag_big\":\"ca-big.png\",\"sequence\":\"210\",\"short_name\":\"canada\",\"domain_switcher_region_name\":\"North America\"},{\"id\":\"13\",\"domain_name\":\"freelancer.com.jm\",\"url\":\"https:\\\/\\\/www.freelancer.com.jm\",\"pattern\":\"\\\/freelancer.com.jm$\\\/\",\"name\":\"Jamaica\",\"info\":\"Go to JM site\",\"info_selected\":\"Stay in JM\",\"flag_small\":\"jm.png\",\"flag_big\":\"jm-big.png\",\"sequence\":\"220\",\"short_name\":\"jamaica\",\"domain_switcher_region_name\":\"North America\"}]},{\"name\":\"Africa\",\"domains\":[{\"id\":\"11\",\"domain_name\":\"freelancer.co.za\",\"url\":\"https:\\\/\\\/www.freelancer.co.za\",\"pattern\":\"\\\/freelancer.co.za$\\\/\",\"name\":\"South Africa\",\"info\":\"Go to ZA site\",\"info_selected\":\"Stay in ZA\",\"flag_small\":\"za.png\",\"flag_big\":\"za-big.png\",\"sequence\":\"500\",\"short_name\":\"south-africa\",\"domain_switcher_region_name\":\"Africa\"},{\"id\":\"55\",\"domain_name\":\"freelancer.co.ke\",\"url\":\"https:\\\/\\\/www.freelancer.co.ke\",\"pattern\":\"\\\/freelancer.co.ke$\\\/\",\"name\":\"Kenya\",\"info\":\"Go to KE site\",\"info_selected\":\"Stay in KE\",\"flag_small\":\"ke.png\",\"flag_big\":\"ke-big.png\",\"sequence\":\"510\",\"short_name\":\"kenya\",\"domain_switcher_region_name\":\"Africa\"}]},{\"name\":\"Europe\",\"domains\":[{\"id\":\"4\",\"domain_name\":\"freelancer.co.uk\",\"url\":\"https:\\\/\\\/www.freelancer.co.uk\",\"pattern\":\"\\\/freelancer.co.uk$\\\/\",\"name\":\"United Kingdom\",\"info\":\"Go to UK site\",\"info_selected\":\"Stay in UK\",\"flag_small\":\"uk.png\",\"flag_big\":\"uk-big.png\",\"sequence\":\"600\",\"short_name\":\"uk\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"10\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/eu\\\/welcome.php\",\"pattern\":\"\\\/freelancer.eu$\\\/\",\"name\":\"European Union\",\"info\":\"Go to EU site\",\"info_selected\":\"Stay in EU\",\"flag_small\":\"eu.png\",\"flag_big\":\"eu-big.png\",\"sequence\":\"610\",\"short_name\":\"europe-union\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"22\",\"domain_name\":\"fr.freelancer.com\",\"url\":\"https:\\\/\\\/www.fr.freelancer.com\",\"pattern\":\"\\\/fr.freelancer.com$\\\/\",\"name\":\"France\",\"info\":\"Go to FR site\",\"info_selected\":\"Stay in FR\",\"flag_small\":\"fr.png\",\"flag_big\":\"fr-big.png\",\"sequence\":\"620\",\"short_name\":\"france\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"8\",\"domain_name\":\"freelancer.de\",\"url\":\"https:\\\/\\\/www.freelancer.de\",\"pattern\":\"\\\/freelancer.de$\\\/\",\"name\":\"Germany\",\"info\":\"Go to DE site\",\"info_selected\":\"Stay in DE\",\"flag_small\":\"de.png\",\"flag_big\":\"de-big.png\",\"sequence\":\"630\",\"short_name\":\"germany\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"42\",\"domain_name\":\"freelancer.gr\",\"url\":\"https:\\\/\\\/www.freelancer.gr\",\"pattern\":\"\\\/freelancer.gr$\\\/\",\"name\":\"Greece\",\"info\":\"Go to GR site\",\"info_selected\":\"Stay in GR\",\"flag_small\":\"gr.png\",\"flag_big\":\"gr-big.png\",\"sequence\":\"640\",\"short_name\":\"greece\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"35\",\"domain_name\":\"freelancer.pt\",\"url\":\"https:\\\/\\\/www.freelancer.pt\",\"pattern\":\"\\\/freelancer.pt$\\\/\",\"name\":\"Portugal\",\"info\":\"Go to PT site\",\"info_selected\":\"Stay in PT\",\"flag_small\":\"pt.png\",\"flag_big\":\"pt-big.png\",\"sequence\":\"650\",\"short_name\":\"portugal\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"14\",\"domain_name\":\"freelancer.es\",\"url\":\"https:\\\/\\\/www.freelancer.es\",\"pattern\":\"\\\/freelancer.es$\\\/\",\"name\":\"Spain\",\"info\":\"Go to ES site\",\"info_selected\":\"Stay in ES\",\"flag_small\":\"es.png\",\"flag_big\":\"es-big.png\",\"sequence\":\"660\",\"short_name\":\"spain\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"45\",\"domain_name\":\"freelancer.cz\",\"url\":\"https:\\\/\\\/www.freelancer.cz\",\"pattern\":\"\\\/freelancer.cz$\\\/\",\"name\":\"Czech Republic\",\"info\":\"Go to CZ site\",\"info_selected\":\"Stay in CZ\",\"flag_small\":\"cz.png\",\"flag_big\":\"cz-big.png\",\"sequence\":\"665\",\"short_name\":\"czech-republic\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"33\",\"domain_name\":\"freelancer.se\",\"url\":\"https:\\\/\\\/www.freelancer.se\",\"pattern\":\"\\\/freelancer.se$\\\/\",\"name\":\"Sweden\",\"info\":\"Go to SV site\",\"info_selected\":\"Stay in SV\",\"flag_small\":\"sv.png\",\"flag_big\":\"sv-big.png\",\"sequence\":\"670\",\"short_name\":\"sweden\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"43\",\"domain_name\":\"freelancer.is\",\"url\":\"https:\\\/\\\/www.freelancer.is\",\"pattern\":\"\\\/freelancer.is$\\\/\",\"name\":\"Iceland\",\"info\":\"Go to IS site\",\"info_selected\":\"Stay in IS\",\"flag_small\":\"is.png\",\"flag_big\":\"is-big.png\",\"sequence\":\"680\",\"short_name\":\"iceland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"50\",\"domain_name\":\"freelancer.ie\",\"url\":\"https:\\\/\\\/www.freelancer.ie\",\"pattern\":\"\\\/freelancer.ie$\\\/\",\"name\":\"Ireland\",\"info\":\"Go to IE site\",\"info_selected\":\"Stay in IE\",\"flag_small\":\"ie.png\",\"flag_big\":\"ie-big.png\",\"sequence\":\"685\",\"short_name\":\"ireland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"26\",\"domain_name\":\"freelancer.co.it\",\"url\":\"https:\\\/\\\/www.freelancer.co.it\",\"pattern\":\"\\\/freelancer.co.it$\\\/\",\"name\":\"Italy\",\"info\":\"Go to IT site\",\"info_selected\":\"Stay in IT\",\"flag_small\":\"it.png\",\"flag_big\":\"it-big.png\",\"sequence\":\"690\",\"short_name\":\"italy\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"27\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/changeLanguage.php?lang=nl\",\"pattern\":\"\\\/freelancer.co.nl$\\\/\",\"name\":\"Netherlands\",\"info\":\"Go to NL site\",\"info_selected\":\"Stay in NL\",\"flag_small\":\"nl.png\",\"flag_big\":\"nl-big.png\",\"sequence\":\"700\",\"short_name\":\"netherlands\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"28\",\"domain_name\":\"tr.freelancer.com\",\"url\":\"https:\\\/\\\/www.tr.freelancer.com\",\"pattern\":\"\\\/tr.freelancer.com$\\\/\",\"name\":\"Turkey\",\"info\":\"Go to TR site\",\"info_selected\":\"Stay in TR\",\"flag_small\":\"tr.png\",\"flag_big\":\"tr-big.png\",\"sequence\":\"710\",\"short_name\":\"turkey\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"36\",\"domain_name\":\"freelancer.pl\",\"url\":\"https:\\\/\\\/www.freelancer.pl\",\"pattern\":\"\\\/freelancer.pl$\\\/\",\"name\":\"Poland\",\"info\":\"Go to PL site\",\"info_selected\":\"Stay in PL\",\"flag_small\":\"pl.png\",\"flag_big\":\"pl-big.png\",\"sequence\":\"720\",\"short_name\":\"poland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"39\",\"domain_name\":\"freelancer.co.ro\",\"url\":\"https:\\\/\\\/www.freelancer.co.ro\",\"pattern\":\"\\\/freelancer.co.ro$\\\/\",\"name\":\"Romania\",\"info\":\"Go to RO site\",\"info_selected\":\"Stay in RO\",\"flag_small\":\"ro.png\",\"flag_big\":\"ro-big.png\",\"sequence\":\"730\",\"short_name\":\"romania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"40\",\"domain_name\":\"freelancer.com.ru\",\"url\":\"https:\\\/\\\/www.freelancer.com.ru\",\"pattern\":\"\\\/freelancer.com.ru$\\\/\",\"name\":\"Russia\",\"info\":\"Go to RU site\",\"info_selected\":\"Stay in RU\",\"flag_small\":\"ru.png\",\"flag_big\":\"ru-big.png\",\"sequence\":\"740\",\"short_name\":\"russia\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"47\",\"domain_name\":\"freelancer.com.ua\",\"url\":\"https:\\\/\\\/www.freelancer.com.ua\",\"pattern\":\"\\\/freelancer.com.ua$\\\/\",\"name\":\"Ukraine\",\"info\":\"Go to UA site\",\"info_selected\":\"Stay in UA\",\"flag_small\":\"ua.png\",\"flag_big\":\"ua-big.png\",\"sequence\":\"1090\",\"short_name\":\"ukraine\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"48\",\"domain_name\":\"freelancer.no\",\"url\":\"https:\\\/\\\/www.freelancer.no\",\"pattern\":\"\\\/freelancer.no$\\\/\",\"name\":\"Norway\",\"info\":\"Go to NO site\",\"info_selected\":\"Stay in NO\",\"flag_small\":\"no.png\",\"flag_big\":\"no-big.png\",\"sequence\":\"1100\",\"short_name\":\"norway\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"57\",\"domain_name\":\"freelancer.hu\",\"url\":\"https:\\\/\\\/www.freelancer.hu\",\"pattern\":\"\\\/freelancer.hu$\\\/\",\"name\":\"Hungary\",\"info\":\"Go to HU site\",\"info_selected\":\"Stay in HU\",\"flag_small\":\"hu.png\",\"flag_big\":\"hu-big.png\",\"sequence\":\"1110\",\"short_name\":\"hungary\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"52\",\"domain_name\":\"fi.freelancer.com\",\"url\":\"https:\\\/\\\/www.fi.freelancer.com\",\"pattern\":\"\\\/fi.freelancer.com$\\\/\",\"name\":\"Finland\",\"info\":\"Go to FI site\",\"info_selected\":\"Stay in FI\",\"flag_small\":\"fi.png\",\"flag_big\":\"fi-big.png\",\"sequence\":\"1120\",\"short_name\":\"finland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"53\",\"domain_name\":\"dk.freelancer.com\",\"url\":\"https:\\\/\\\/www.dk.freelancer.com\",\"pattern\":\"\\\/dk.freelancer.com$\\\/\",\"name\":\"Denmark\",\"info\":\"Go to DK site\",\"info_selected\":\"Stay in DK\",\"flag_small\":\"dk.png\",\"flag_big\":\"dk-big.png\",\"sequence\":\"1130\",\"short_name\":\"denmark\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"56\",\"domain_name\":\"freelancer.com.al\",\"url\":\"https:\\\/\\\/www.freelancer.com.al\",\"pattern\":\"\\\/freelancer.com.al$\\\/\",\"name\":\"Albania\",\"info\":\"Go to AL site\",\"info_selected\":\"Stay in AL\",\"flag_small\":\"al.png\",\"flag_big\":\"al-big.png\",\"sequence\":\"1140\",\"short_name\":\"albania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"51\",\"domain_name\":\"freelancer.si\",\"url\":\"https:\\\/\\\/www.freelancer.si\",\"pattern\":\"\\\/freelancer.si$\\\/\",\"name\":\"Slovenia\",\"info\":\"Go to SI site\",\"info_selected\":\"Stay in SI\",\"flag_small\":\"si.png\",\"flag_big\":\"si-big.png\",\"sequence\":\"1150\",\"short_name\":\"slovenia\",\"domain_switcher_region_name\":\"Europe\"}]},{\"name\":\"Asia Pacific\",\"domains\":[{\"id\":\"3\",\"domain_name\":\"freelancer.com.au\",\"url\":\"https:\\\/\\\/www.freelancer.com.au\",\"pattern\":\"\\\/freelancer.com.au$\\\/\",\"name\":\"Australia\",\"info\":\"Go to Australia site\",\"info_selected\":\"Stay in Australia\",\"flag_small\":\"au.png\",\"flag_big\":\"au-big.png\",\"sequence\":\"800\",\"short_name\":\"australia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"2\",\"domain_name\":\"freelancer.co.nz\",\"url\":\"https:\\\/\\\/www.freelancer.co.nz\",\"pattern\":\"\\\/freelancer.co.nz$\\\/\",\"name\":\"New Zealand\",\"info\":\"Go to New Zealand site\",\"info_selected\":\"Stay in New Zealand\",\"flag_small\":\"nz.png\",\"flag_big\":\"nz-big.png\",\"sequence\":\"810\",\"short_name\":\"new-zealand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"5\",\"domain_name\":\"freelancer.hk\",\"url\":\"https:\\\/\\\/www.freelancer.hk\",\"pattern\":\"\\\/freelancer.hk$\\\/\",\"name\":\"Hong Kong\",\"info\":\"Go to HK site\",\"info_selected\":\"Stay in HK\",\"flag_small\":\"hk.png\",\"flag_big\":\"hk-big.png\",\"sequence\":\"820\",\"short_name\":\"hong-kong\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"29\",\"domain_name\":\"freelancer.com.bd\",\"url\":\"https:\\\/\\\/www.freelancer.com.bd\",\"pattern\":\"\\\/freelancer.com.bd$\\\/\",\"name\":\"Bangladesh\",\"info\":\"Go to BD site\",\"info_selected\":\"Stay in BD\",\"flag_small\":\"bd.png\",\"flag_big\":\"bd-big.png\",\"sequence\":\"830\",\"short_name\":\"bangladesh\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"12\",\"domain_name\":\"freelancer.in\",\"url\":\"https:\\\/\\\/www.freelancer.in\",\"pattern\":\"\\\/freelancer.in$\\\/\",\"name\":\"India\",\"info\":\"Go to IN site\",\"info_selected\":\"Stay in IN\",\"flag_small\":\"in.png\",\"flag_big\":\"in-big.png\",\"sequence\":\"840\",\"short_name\":\"india\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"24\",\"domain_name\":\"freelancer.co.id\",\"url\":\"https:\\\/\\\/www.freelancer.co.id\",\"pattern\":\"\\\/freelancer.co.id$\\\/\",\"name\":\"Indonesia\",\"info\":\"Go to ID site\",\"info_selected\":\"Stay in ID\",\"flag_small\":\"id.png\",\"flag_big\":\"id-big.png\",\"sequence\":\"850\",\"short_name\":\"indo\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"41\",\"domain_name\":\"freelancer.jp\",\"url\":\"https:\\\/\\\/www.freelancer.jp\",\"pattern\":\"\\\/freelancer.jp$\\\/\",\"name\":\"Japan\",\"info\":\"Go to JP site\",\"info_selected\":\"Stay in JP\",\"flag_small\":\"jp.png\",\"flag_big\":\"jp-big.png\",\"sequence\":\"860\",\"short_name\":\"japan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"49\",\"domain_name\":\"freelancer.co.kr\",\"url\":\"https:\\\/\\\/www.freelancer.co.kr\",\"pattern\":\"\\\/freelancer.co.kr$\\\/\",\"name\":\"Korea, Republic of\",\"info\":\"Go to KR site\",\"info_selected\":\"Stay in KR\",\"flag_small\":\"kr.png\",\"flag_big\":\"kr-big.png\",\"sequence\":\"865\",\"short_name\":\"korea-republic-of\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"30\",\"domain_name\":\"my.freelancer.com\",\"url\":\"https:\\\/\\\/www.my.freelancer.com\",\"pattern\":\"\\\/my.freelancer.com$\\\/\",\"name\":\"Malaysia\",\"info\":\"Go to MS site\",\"info_selected\":\"Stay in MS\",\"flag_small\":\"ms.png\",\"flag_big\":\"ms-big.png\",\"sequence\":\"870\",\"short_name\":\"malaysia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"20\",\"domain_name\":\"freelancer.pk\",\"url\":\"https:\\\/\\\/www.freelancer.pk\",\"pattern\":\"\\\/freelancer.pk$\\\/\",\"name\":\"Pakistan\",\"info\":\"Go to PK site\",\"info_selected\":\"Stay in PK\",\"flag_small\":\"pk.png\",\"flag_big\":\"pk-big.png\",\"sequence\":\"880\",\"short_name\":\"pakistan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"7\",\"domain_name\":\"freelancer.ph\",\"url\":\"https:\\\/\\\/www.freelancer.ph\",\"pattern\":\"\\\/freelancer.ph$\\\/\",\"name\":\"Philippines\",\"info\":\"Go to PH site\",\"info_selected\":\"Stay in PH\",\"flag_small\":\"ph.png\",\"flag_big\":\"ph-big.png\",\"sequence\":\"890\",\"short_name\":\"philippines\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"38\",\"domain_name\":\"freelancer.cn\",\"url\":\"https:\\\/\\\/www.freelancer.cn\",\"pattern\":\"\\\/freelancer.cn$\\\/\",\"name\":\"P.R. China\",\"info\":\"Go to ZH site\",\"info_selected\":\"Stay in ZH\",\"flag_small\":\"zh.png\",\"flag_big\":\"zh-big.png\",\"sequence\":\"900\",\"short_name\":\"china\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"6\",\"domain_name\":\"freelancer.sg\",\"url\":\"https:\\\/\\\/www.freelancer.sg\",\"pattern\":\"\\\/freelancer.sg$\\\/\",\"name\":\"Singapore\",\"info\":\"Go to SG site\",\"info_selected\":\"Stay in SG\",\"flag_small\":\"sg.png\",\"flag_big\":\"sg-big.png\",\"sequence\":\"910\",\"short_name\":\"singapore\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"44\",\"domain_name\":\"freelancer.co.th\",\"url\":\"https:\\\/\\\/www.freelancer.co.th\",\"pattern\":\"\\\/freelancer.co.th$\\\/\",\"name\":\"Thailand\",\"info\":\"Go to TH site\",\"info_selected\":\"Stay in TH\",\"flag_small\":\"th.png\",\"flag_big\":\"th-big.png\",\"sequence\":\"940\",\"short_name\":\"thailand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"54\",\"domain_name\":\"vn.freelancer.com\",\"url\":\"https:\\\/\\\/www.vn.freelancer.com\",\"pattern\":\"\\\/vn.freelancer.com$\\\/\",\"name\":\"Vietnam\",\"info\":\"Go to VN site\",\"info_selected\":\"Stay in VN\",\"flag_small\":\"vn.png\",\"flag_big\":\"vn-big.png\",\"sequence\":\"950\",\"short_name\":\"vietnam\",\"domain_switcher_region_name\":\"Asia Pacific\"}]},{\"name\":\"Latin America\",\"domains\":[{\"id\":\"18\",\"domain_name\":\"freelancer.com.ar\",\"url\":\"https:\\\/\\\/www.freelancer.com.ar\",\"pattern\":\"\\\/freelancer.com.ar$\\\/\",\"name\":\"Argentina\",\"info\":\"Go to AR site\",\"info_selected\":\"Stay in AR\",\"flag_small\":\"ar.png\",\"flag_big\":\"ar-big.png\",\"sequence\":\"1000\",\"short_name\":\"argentina\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"25\",\"domain_name\":\"br.freelancer.com\",\"url\":\"https:\\\/\\\/www.br.freelancer.com\",\"pattern\":\"\\\/br.freelancer.com$\\\/\",\"name\":\"Brazil\",\"info\":\"Go to BR site\",\"info_selected\":\"Stay in BR\",\"flag_small\":\"br.png\",\"flag_big\":\"br-big.png\",\"sequence\":\"1010\",\"short_name\":\"brazil\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"46\",\"domain_name\":\"freelancer.cl\",\"url\":\"https:\\\/\\\/www.freelancer.cl\",\"pattern\":\"\\\/freelancer.cl$\\\/\",\"name\":\"Chile\",\"info\":\"Go to CL site\",\"info_selected\":\"Stay in CL\",\"flag_small\":\"cl.png\",\"flag_big\":\"cl-big.png\",\"sequence\":\"1020\",\"short_name\":\"chile\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"37\",\"domain_name\":\"freelancer.com.co\",\"url\":\"https:\\\/\\\/www.freelancer.com.co\",\"pattern\":\"\\\/freelancer.com.co$\\\/\",\"name\":\"Colombia\",\"info\":\"Go to CO site\",\"info_selected\":\"Stay in CO\",\"flag_small\":\"co.png\",\"flag_big\":\"co-big.png\",\"sequence\":\"1030\",\"short_name\":\"colombia\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"17\",\"domain_name\":\"freelancer.ec\",\"url\":\"https:\\\/\\\/www.freelancer.ec\",\"pattern\":\"\\\/freelancer.ec$\\\/\",\"name\":\"Ecuador\",\"info\":\"Go to EC site\",\"info_selected\":\"Stay in EC\",\"flag_small\":\"ec.png\",\"flag_big\":\"ec-big.png\",\"sequence\":\"1040\",\"short_name\":\"ecuador\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"15\",\"domain_name\":\"freelancer.mx\",\"url\":\"https:\\\/\\\/www.freelancer.mx\",\"pattern\":\"\\\/freelancer.mx$\\\/\",\"name\":\"Mexico\",\"info\":\"Go to MX site\",\"info_selected\":\"Stay in MX\",\"flag_small\":\"mx.png\",\"flag_big\":\"mx-big.png\",\"sequence\":\"1050\",\"short_name\":\"mexico\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"16\",\"domain_name\":\"freelancer.com.pe\",\"url\":\"https:\\\/\\\/www.freelancer.com.pe\",\"pattern\":\"\\\/freelancer.com.pe$\\\/\",\"name\":\"Peru\",\"info\":\"Go to PE site\",\"info_selected\":\"Stay in PE\",\"flag_small\":\"pe.png\",\"flag_big\":\"pe-big.png\",\"sequence\":\"1070\",\"short_name\":\"peru\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"31\",\"domain_name\":\"freelancer.uy\",\"url\":\"https:\\\/\\\/www.freelancer.uy\",\"pattern\":\"\\\/freelancer.uy$\\\/\",\"name\":\"Uruguay\",\"info\":\"Go to UY site\",\"info_selected\":\"Stay in UY\",\"flag_small\":\"uy.png\",\"flag_big\":\"uy-big.png\",\"sequence\":\"1080\",\"short_name\":\"uruguay\",\"domain_swit:cher_region_name\":\"Latin America\"}]}]}}\n"}]},{"id":"9272868","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9272867","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"95","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"95","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Reference, Path, Query, Action } from '.\/store'\n+import { backend } from '.\/backend';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+export interface ListOptions {\n+ query: QueryObservable;\n+}\n+\n+export interface QueryObservable {\n+ limit?: number|Observable<number>;\n+ offset?: number|Observable<number>;\n+}\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<RootModel>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {}\n+\n+ list<a extends keyof RootModel, b extends keyof RootModel[a]>(\n+ key1: a,\n+ key2: b|Observable<b>,\n+ options?: ListOptions\n+ ): ListObservable<Array<RootModel[a][b]>> {\n+\n+ const pathStream = Observable.combineLatest([\n+ (key1 instanceof Observable) ? key1 : Observable.of(key1),\n+ (key2 instanceof Observable) ? key2 : Observable.of(key2)\n+ ]);\n+\n+ const query = options ? options.query : {};\n+ const queryStream = Observable.combineLatest([\n+ (query.limit instanceof Observable) ? query.limit : Observable.of(query.limit),\n+ (query.offset instanceof Observable) ? query.offset : Observable.of(query.offset)\n+ ], (limit: number, offset: number) => ({ limit, offset }));\n+\n+ const refStream = Observable.combineLatest(\n+ [pathStream, queryStream],\n+ (path: Path, query: Query): Reference => ({path, query})\n+ )\n+ .multicast(() => new ReplaySubject(1))\n+ .refCount();\n+\n+ const fetchStream = refStream\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ if (backend[path[0]] && backend[path[0]].fetch) {\n+ return Observable.of((<any>backend)[path[0]].fetch(path[1], query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => {\n+ this.store.dispatch(<Action>{\n+ type: 'API_FETCH_SUCCESS',\n+ payload: { data, ref }\n+ })\n+ })\n+ .mapTo({path, query});\n+ } else {\n+ return Observable.empty();\n+ }\n+ });\n+\n+ \/\/ TODO: WebSocket -> liveStream\n+\n+ return new ListObservable(refStream, this.apiHttp, this.store,\n+ Observable.merge(refStream, fetchStream)\n+ .switchMap(({path, query}: any) =>\n+ this.store.pluck(...path)\n+ )\n+ .distinctUntilChanged()\n+ .map((data: any) => {\n+ if (data && data.lists) {\n+ \t\t\t\t\treturn (<any>data).lists['default']\n+ \t\t\t\t\t .slice(query.offset || 0)\n+ \t\t\t\t\t .map((id: any) => (<any>data).entities[<string>id]);\n+ } else {\n+ return [];\n+ }\n+ })\n+ );\n+\n+ }\n+\n+ \/\/ TODO: object() => new ObjectObservable()\n+\n+}\n"}]},{"id":"9272866","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5,\n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9272865","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9272864","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/backend.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Backend {\n+ fetch?: (key: string, query: any) => {\n+ endpoint: string;\n+ params: {\n+ [key: string]: string|number;\n+ };\n+ },\n+ post?: (key: string) => {\n+ endpoint: string;\n+ }\n+};\n+\n+export const backend: { [k: string]: Backend } = {\n+ threads: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/threads`,\n+ params: {\n+ unread_count: 'true',\n+ last_message: 'true',\n+ message_details: 'true',\n+ context_details: 'true',\n+ user_details: 'true',\n+ limit: query.limit\n+ }\n+ })\n+ },\n+ messages: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/messages`,\n+ params: {\n+ 'threads[]': key,\n+ }\n+ }),\n+ post: (key) => ({\n+ endpoint: `messages\/0.1\/threads\/${key}\/messages\/`,\n+ params: {\n+ thread_id: key\n+ }\n+ })\n+ }\n+};\n"}]},{"id":"9272863","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.params)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ post(config: any, payload: Object): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.post(`${this.config.apiBaseUrl}\/${config.endpoint}`,\n+ this.serialize({ ...payload, ...config.params }), {\n+ headers: authHeader,\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid , token}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${uid};${token}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ const params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ params.set('compact', 'true');\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9272862","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9272861","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n"}]},{"id":"9272860","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9272859","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9272858","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ uid: number;\n+ token: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const uid = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10);\n+ const token = this.cookies.get(this.authConfig.authHashCookie);\n+ this.next({ uid, token });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9272857","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n"}]},{"id":"9272856","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9272855","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-4nm77irqd7p5t2ouplkd"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272854","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9272853","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888 -ssl\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.1\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9272852","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9272851","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9272850","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9272849","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9272848","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+See [The Webapp Playbook](https:\/\/phabricator.freelancer.com\/w\/gaf\/app).\n"}]},{"id":"9272847","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6\n"}]},{"id":"9272846","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9272845","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9272844","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9272843","metadata":{"line:first":727},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"974","newLength":"975","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/view_new.php$ https:\/\/$http_host\/projects\/$arg_id.html permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # data.freelancer.com remap\n rewrite ^\/data\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/$2\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/$2\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/ https:\/\/$host\/find\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?no_redirect=true&mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n rewrite ^\/buyers\/welcome-employer\\.php$ https:\/\/$host\/onboard permanent;\n rewrite ^\/onboard$ \/buyers\/welcome-employer.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/user-sessions\/([0-9]+)$ \/admin\/support-queue\/user-support-sessions.php?userId=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php last;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z0-9\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # Cluster Directory Page\n rewrite ^\/outsource-directory\/?$ \/seo\/cluster-page-directory.php last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n \n rewrite ^\/adroll\/([\\w-\\.]+)\/([\\w-\\.]+)\/ https:\/\/$host\/hire\/$1\/$2\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/([\\w-\\.]+)\/([\\w-\\.]+) https:\/\/$host\/hire\/$1\/$2\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/([\\w-\\.]+)\/ https:\/\/$host\/hire\/$1\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/([\\w-\\.]+) https:\/\/$host\/hire\/$1\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/ https:\/\/$host\/hire\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll$ https:\/\/$host\/hire\/?inline=false&no_redirect=true permanent;\n \n rewrite ^\/fb\/([\\w-\\.]+)\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/fb\/([\\w-\\.]+)\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/fb\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/fb\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/fb\/ https:\/\/$host\/find\/ permanent;\n rewrite ^\/fb$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/android-app-download\/?$ https:\/\/play.google.com\/store\/apps\/details?id=com.freelancer.android.messenger&utm_source=massmailer&utm_medium=email&utm_campaign=emailblast2.0 permanent;\n rewrite ^\/android-app-beta(\/)?$ https:\/\/$host\/mobile-app\/ permanent;\n \n # S3 backed requests\n rewrite ^\/(sitemap(?:_new)?_index.*\\.xml)$ \/s3.php?bucket=sitemap&key=$1 last;\n"}]},{"id":"9272842","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9272841","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter([\n 'contexts' => [\n new \\thrift\\messages\\Context([\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n ]),\n ],\n 'thread_members' => [$uid => $uid],\n ]);\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(['user_id' => $user]),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = [];\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = [\n 'skin\/inbox-page.less',\n ];\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9272840","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9272839","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272838","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9272837","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9272836","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9272835","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9272834","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { RouterModule, Routes } from '@angular\/router';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n-\n-const messagingInboxRoutes: Routes = [\n- {\n- path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forChild(messagingInboxRoutes),\n- ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class MessagingInboxRoutingModule { }\n"}]},{"id":"9272833","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9272832","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9272831","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9272830","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9272829","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9272828","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9272827","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9272826","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9272825","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9272824","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9272823","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9272822","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9272821","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9272820","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"40","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"40","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n-import { Thread, ThreadService } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-list',\n- template: `\n- <div *ngFor=\"let thread of threads;\">\n- - - - - - - - - - - - - - - - - - - - - - -\n- <thread-item [thread]=\"thread\"\n- openThread=\"onOpenThread($event)\">\n- <\/thread-item>\n- - - - - - - - - - - - - - - - - - - - - - -\n- <\/div>\n- `,\n-})\n-export class ThreadListComponent implements OnInit {\n- @Output() openThread = new EventEmitter<Thread>();\n-\n- threads: Thread[];\n-\n- constructor(private threadService: ThreadService) {}\n-\n- getThreads() {\n- this.threads = [{\n- people: ['Laurent', 'Andrew', 'Geoff'],\n- }, {\n- people: ['Steven', 'Diego'],\n- }];\n- \/\/ this.threadService.getThreads()\n- \/\/ .subscribe(threads => this.threads = threads);\n- }\n-\n- ngOnInit() {\n- this.getThreads();\n- }\n-\n- onOpenThread($event: Thread) {\n- this.openThread.emit($event);\n- }\n-}\n"}]},{"id":"9272819","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9272818","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9272817","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9272816","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9272815","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9272814","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9272813","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9272812","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9272811","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9272810","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9272809","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"398","newLength":"373","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"preconnect\" href=\"\/\/www.f-cdn.com\" crossorigin>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!show_support_banner!\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n !show_support_banner!}}\n ?IS_AUTH?}}\n {{?show_support_banner?\n <div class=\"important-announcement\" data-target=\"support-important-announcement\">\n {{<systemjs_module('support-banner')>}}\n <\/div>\n ?show_support_banner?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{!skip_messaging_modules!\n {{<systemjs_server_data(\"messaging\", \"hideMessaging\", \"{{hide_messaging}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <div class=\"Chat\">\n <fl-messaging-chat class=\"ChatBox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n class=\"ChatBox-wrapper-inner\"\n ng-repeat=\"attributes in ctrl.chatboxes | visible: ctrl.hideMessaging\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n \n <!-- contact list section -->\n {{!hide_messaging!\n <fl-messaging-contacts-new class=\"ContactList-wrapper\">\n <\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n !hide_messaging!}}\n <\/div>\n \n <div id=\"toast-notifications-wrapper\"><\/div>\n !skip_messaging_modules!}}\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9272808","metadata":{"line:first":26},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"49","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1278","newLength":"1233","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS_https --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n+ \"build:webapp\": \"cd webapp && yarn && npm run build && cd ..\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 babel-node scripts\/build-assets\/critical-css.js --cwd .\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-angular\": \"^1.6.1\",\n \"eslint-plugin-freelancer\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-freelancer.git#v1.1.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"object-fit-images\": \"^3.1.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-object-fit-images\": \"^1.1.2\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n \"eslint-nibble\": \"~3.1.0\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"crypto-js\": \"npm:crypto-js@^3.1.9-1\",\n \"fl-autosize\": \"gitlab:angular\/autosize@3.0.21\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.12.2\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jquery-validation\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"slick-carousel\": \"github:kenwheeler\/slick@1.6.0\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"npm:jspm-nodelibs-path@^0.2.0\",\n- \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n+ \"process\": \"npm:jspm-nodelibs-process@^0.2.0\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-touch.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n- \"npm:@angular\/common@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/compiler@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/core@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/forms@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/http@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/platform-browser@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/router@3.2.4\": {\n- \"main\": \"index.js\"\n- },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jquery-validation\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n- \"npm:angular@1.6.2\": {\n+ \"npm:angular@1.6.3\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.1\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:svgo@0.7.2\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n },\n \"github:kenwheeler\/slick@1.6.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"slick\/slick.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n },\n \"slick\/*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9272807","metadata":{"line:first":18},"oldPath":".arclint","currentPath":".arclint","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"343","newLength":"344","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"exclude\": [\n \"(^public\/lib\/thrift\/packages\/)\",\n \"(^public\/static\/.*\/bower_components\/)\",\n \"(^public\/static\/css\/bootstrap\/)\",\n \"(^public\/static\/css\/critical-css\/)\",\n \"(^public\/static\/css\/js-plugins\/)\",\n \"(^public\/static\/@styles)\",\n \"(^support\/flarc\/.*\\\\.lint-test$)\"\n ],\n \"linters\": {\n \"chmod\": {\n \"type\": \"chmod\"\n },\n \"filename\": {\n \"type\": \"filename\",\n \"exclude\": [\n- \"(^public\/static\/modules\/)\"\n+ \"(^public\/static\/modules\/)\",\n+ \"(^webapp\/)\"\n ]\n },\n \"generated\": {\n \"type\": \"generated\"\n },\n \"javascript\": {\n \"type\": \"jshint\",\n \"include\": \"(\\\\.js$)\",\n \"exclude\": [\n \"(^public\/static\/angularjs\/)\",\n \"(^public\/static\/modules\/)\",\n \"(^public\/tests\/js\/app_tests\/)\",\n \"(^scripts\/build-assets\/.*\\\\.js$)\",\n \"(\\\\.min\\\\.js$)\"\n ],\n \"jshint.jshintignore\": \"support\/lint\/jshintignore\",\n \"jshint.jshintrc\": \"support\/lint\/default.jshintrc\"\n },\n \"javascript-angularjs\": {\n \"type\": \"jshint\",\n \"include\": [\n \"(^public\/static\/angularjs\/.*\\\\.js$)\"\n ],\n \"jshint.jshintrc\": \"support\/lint\/angularjs.jshintrc\"\n },\n \"javascript-modules\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^public\/static\/modules\/.*\\\\.js$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"public\/static\/modules\/.eslintrc\"\n },\n \"typescript-modules\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^public\/static\/modules\/.*\\\\.ts$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"public\/static\/modules\/.eslintrc_ts\"\n },\n \"javascript-node\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^scripts\/build-assets\/.*\\\\.js$)\"\n ],\n \"exclude\": [\n \"(^scripts\/build-assets\/legacy\/.*\\\\.js$)\",\n \"(^scripts\/build-assets\/Gruntfile.js$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"scripts\/build-assets\/.eslintrc\"\n },\n \"javascript-node-legacy\": {\n \"type\": \"jshint\",\n \"include\": [\n \"(^scripts\/build-assets\/legacy\/.*\\\\.js$)\",\n \"(^scripts\/build-assets\/Gruntfile.js$)\"\n ],\n \"jshint.jshintrc\": \"support\/lint\/node.jshintrc\"\n },\n \"json\": {\n \"type\": \"json\",\n \"include\": [\n \"(^\\\\.arcconfig$)\",\n \"(^\\\\.arclint$)\",\n \"(\\\\.babelrc$)\",\n \"(\\\\.book$)\",\n \"(\\\\.eslintrc$)\",\n \"(\\\\.jshintrc$)\",\n \"(\\\\.stylelintrc$)\",\n \"(\\\\.json$)\"\n ]\n },\n \"less\": {\n \"type\": \"lessc\",\n \"include\": \"(\\\\.less$)\",\n \"bin\": \"node_modules\/.bin\/lessc\",\n \"flags\": [\n \"--include-path=public\/static\/css\"\n ]\n },\n \"merge-conflict\": {\n \"type\": \"merge-conflict\"\n },\n \"nolint\": {\n \"type\": \"nolint\"\n },\n \"php\": {\n \"type\": \"xhpast\",\n \"include\": \"(\\\\.php$)\",\n \"exclude\": [\n \"(^src\/)\",\n \"(^test\/)\",\n \"(^support\/flarc\/.*\\\\.php$)\"\n ],\n \"severity\": {\n \"5\": \"warning\",\n \"9\": \"disabled\",\n \"19\": \"disabled\",\n \"57\": \"disabled\",\n \"78\": \"warning\"\n },\n \"xhpast.blacklisted.function\": {\n \"__halt_compiler\": \"The `__halt_compiler` function should not be used.\",\n \"class_alias\": \"The `class_alias` function should be avoided. It makes debugging more difficult.\",\n \"create_function\": \"The `create_function` function is essentially equivalent to `eval`. You should use anonymous functions instead.\",\n \"dl\": \"The `dl` function should not be used to load a PHP extension.\",\n \"eval\": \"The `eval` function should be avoided. It is potentially unsafe and makes debugging more difficult.\",\n \"get_magic_quotes_gpc\": \"This function always returns `false` in PHP version greater than or equal to 5.4.0.\",\n \"get_magic_quotes_runtime\": \"This function always returns `false` in PHP version greater than or equal to 5.4.0.\",\n \"phpcredits\": \"The `phpcredits` function should not be used.\",\n \"phpinfo\": \"The `phpinfo` function should not be used.\"\n },\n \"xhpast.deprecated.class\": {\n \"Encryption\": \"The `Encryption` class doesn't properly encrypt data.\",\n \"FasterLoginHandler\": \"Use the `InstantLoginHandler` class instead.\",\n \"FastLoginHandler\": \"Use the `InstantLoginHandler` class instead.\",\n \"FloatRegister\": true,\n \"FloatTimeRegister\": true,\n \"FreelancerToken\": true,\n \"HashUtil\": true,\n \"IntRegister\": true,\n \"IntTimeRegister\": true,\n \"NumberRegister\": true,\n \"NumberTimeRegister\": true,\n \"Register\": true,\n \"S3\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Aws\\\\S3Client` class instead.\"\n },\n \"xhpast.deprecated.functions\": {\n \"adapt_page\": \"\",\n \"append_uri_tracing_comment\": \"Use the `DB` class instead.\",\n \"array_columns\": \"\",\n \"array_columns_to_key_values\": \"\",\n \"array_flatten_kvstore\": \"\",\n \"array_for_enduser\": \"\",\n \"arrayGet\": \"Use `idx` instead.\",\n \"arrayIndexByKey\": \"\",\n \"arrayPath\": \"\",\n \"arrayPluck\": \"\",\n \"array_to_idarray\": \"\",\n \"array_values_to_keys\": \"\",\n \"check_allowed_domains\": \"\",\n \"check_email\": \"\",\n \"check_form_token\": \"\",\n \"check_id\": \"\",\n \"check_sortdir\": \"\",\n \"check_url\": \"\",\n \"closeNotificationDBConnection\": \"Use the `DB` class instead.\",\n \"compare_float\": \"\",\n \"connectToNotificationDB\": \"Use the `DB` class instead.\",\n \"connectToSlaveDB\": \"Use the `DB` class instead.\",\n \"createRegisterObject\": \"\",\n \"csrfprotectionhandler::logcsrfstatus\": \"Use CSRFProtectionHandler::isValidRequest() and handle the boolean result instead.\",\n \"DB::insertMaster\": \"Consider using the `DB::queryMaster` method instead.\",\n \"DB::updateMaster\": \"Consider using the `DB::queryMaster` method instead.\",\n \"decrypt_cookie\": \"\",\n \"dumpTrace\": \"\",\n \"encrypt_cookie\": \"\",\n \"error_log\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"exec_func\": \"\",\n \"execsql\": \"Use the `DB` class instead.\",\n \"generate_form_token\": \"\",\n \"get_affected_row\": \"Use the `DB` class instead.\",\n \"getCurrentDBConnection\": \"Use the `DB` class instead.\",\n \"getDebugPrintBacktrace\": \"Use the `DB` class instead.\",\n \"getHelpItem\": \"\",\n \"getHelpItemLink\": \"\",\n \"get_insert_id\": \"Use the `DB` class instead.\",\n \"get_limits\": \"\",\n \"get_limits_array\": \"\",\n \"get_page_link_str\": \"\",\n \"get_page_link_vars\": \"\",\n \"get_pages_link_str\": \"\",\n \"get_pages_link_vars\": \"\",\n \"getRegister\": \"\",\n \"get_register_value\": \"\",\n \"get_sql_result\": \"Use the `DB` class instead.\",\n \"helplink\": \"\",\n \"inc_register\": \"\",\n \"insert_on_master\": \"Use the `DB` class instead.\",\n \"insert\": \"Use the `DB` class instead.\",\n \"is_valid_goto_url\": \"\",\n \"localise_email\": \"Use the `MailHandler::getEmailReceiverData` method instead.\",\n \"logDbError\": \"Use the `DB` class instead.\",\n \"log_exception\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::warning` method instead.\",\n \"log_notice\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::notice` method instead.\",\n \"log_warning\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::warning` method instead.\",\n \"merge_any_arrays\": \"\",\n \"mysql_array_to_set\": \"Use the `DB` class instead.\",\n \"mysql_affected_rows\": \"Use the `DB` class instead.\",\n \"mysql_client_encoding\": \"Use the `DB` class instead.\",\n \"mysql_close\": \"Use the `DB` class instead.\",\n \"mysql_connect\": \"Use the `DB` class instead.\",\n \"mysql_create_db\": \"Use the `DB` class instead.\",\n \"mysql_data_seek\": \"Use the `DB` class instead.\",\n \"mysql_db_name\": \"Use the `DB` class instead.\",\n \"mysql_db_query\": \"Use the `DB` class instead.\",\n \"mysql_drop_db\": \"Use the `DB` class instead.\",\n \"mysql_errno\": \"Use the `DB` class instead.\",\n \"mysql_error\": \"Use the `DB` class instead.\",\n \"mysql_fetch_assoc\": \"Use the `DB` class instead.\",\n \"mysql_fetch_array\": \"Use the `DB` class instead.\",\n \"mysql_fetch_field\": \"Use the `DB` class instead.\",\n \"mysql_fetch_lengths\": \"Use the `DB` class instead.\",\n \"mysql_fetch_object\": \"Use the `DB` class instead.\",\n \"mysql_fetch_row\": \"Use the `DB` class instead.\",\n \"mysql_field_flags\": \"Use the `DB` class instead.\",\n \"mysql_field_len\": \"Use the `DB` class instead.\",\n \"mysql_field_name\": \"Use the `DB` class instead.\",\n \"mysql_field_seek\": \"Use the `DB` class instead.\",\n \"mysql_field_table\": \"Use the `DB` class instead.\",\n \"mysql_field_type\": \"Use the `DB` class instead.\",\n \"mysql_free_result\": \"Use the `DB` class instead.\",\n \"mysql_get_client_info\": \"Use the `DB` class instead.\",\n \"mysql_get_host_info\": \"Use the `DB` class instead.\",\n \"mysql_get_proto_info\": \"Use the `DB` class instead.\",\n \"mysql_get_server_info\": \"Use the `DB` class instead.\",\n \"mysql_info\": \"Use the `DB` class instead.\",\n \"mysql_insert_id\": \"Use the `DB` class instead.\",\n \"mysql_list_dbs\": \"Use the `DB` class instead.\",\n \"mysql_list_fields\": \"Use the `DB` class instead.\",\n \"mysql_list_processes\": \"Use the `DB` class instead.\",\n \"mysql_list_tables\": \"Use the `DB` class instead.\",\n \"mysql_num_fields\": \"Use the `DB` class instead.\",\n \"mysql_num_rows\": \"Use the `DB` class instead.\",\n \"mysql_pconnect\": \"Use the `DB` class instead.\",\n \"mysql_ping\": \"Use the `DB` class instead.\",\n \"mysql_query\": \"Use the `DB` class instead.\",\n \"mysql_real_escape_string\": \"Use the `DB` class instead.\",\n \"mysql_result\": \"Use the `DB` class instead.\",\n \"mysql_select_db\": \"Use the `DB` class instead.\",\n \"mysql_set_charset\": \"Use the `DB` class instead.\",\n \"mysql_stat\": \"Use the `DB` class instead.\",\n \"mysql_tablename\": \"Use the `DB` class instead.\",\n \"mysql_thread_id\": \"Use the `DB` class instead.\",\n \"mysql_unbuffered_query\": \"Use the `DB` class instead.\",\n \"prepare_amount\": \"\",\n \"prepare_check\": \"\",\n \"prepare_country\": \"\",\n \"prepare_currency\": \"\",\n \"prepare_double\": \"\",\n \"prepare_email\": \"\",\n \"prepare_fax\": \"\",\n \"prepare_filename\": \"\",\n \"prepare_int\": \"\",\n \"prepare_phone\": \"\",\n \"prepare_sql_datetime\": \"\",\n \"prepare_string\": \"\",\n \"prepare_time\": \"\",\n \"query_arrays_on_slave\": \"Use the `DB` class instead.\",\n \"query_arrays\": \"Use the `DB` class instead.\",\n \"query_arrays_without_unslash\": \"Use the `DB` class instead.\",\n \"query_count_on_slave\": \"Use the `DB` class instead.\",\n \"query_count\": \"Use the `DB` class instead.\",\n \"query_one_array_on_slave\": \"Use the `DB` class instead.\",\n \"query_one_array\": \"Use the `DB` class instead.\",\n \"query_only\": \"Use the `DB` class instead.\",\n \"redirect301\": \"\",\n \"restoreDBConnection\": \"Use the `DB` class instead.\",\n \"restoreMasterConnection\": \"Use the `DB` class instead.\",\n \"round_money\": \"\",\n \"select_arrays_on_slave\": \"Use the `DB` class instead.\",\n \"select_arrays\": \"Use the `DB` class instead.\",\n \"select_one_array\": \"Use the `DB` class instead.\",\n \"select_only\": \"Use the `DB` class instead.\",\n \"set_register\": \"\",\n \"trigger_error\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"update_on_master\": \"Use the `DB` class instead.\",\n \"update\": \"Use the `DB` class instead.\",\n \"urlsafe_64decode\": \"\",\n \"urlsafe_64encode\": \"\",\n \"user_error\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"usingSlave\": \"Use the `DB` class instead.\"\n },\n \"xhpast.php-version\": \"5.4.45\"\n },\n \"php-strict\": {\n \"type\": \"xhpast\",\n \"include\": [\n \"(^src\/.*\\\\.php$)\",\n \"(^test\/.*\\\\.php$)\"\n ],\n \"xhpast.php-version\": \"5.4.45\"\n },\n \"spelling\": {\n \"type\": \"spelling\"\n },\n \"stylelint\": {\n \"type\": \"stylelint\",\n \"include\": \"(^public\/static\/css\/flux\/(modules|layout)\/.*\\\\.less$)\",\n \"bin\": \"node_modules\/.bin\/stylelint\",\n \"stylelint.config\": \"public\/static\/css\/.stylelintrc\"\n },\n \"text\": {\n \"type\": \"text\",\n \"exclude\": [\n \"(^public\/.*\\\\.html?$)\",\n \"(\\\\.svg$)\",\n \"(^scripts\/build-assets\/build.js$)\"\n ],\n \"severity\": {\n \"4\": \"autofix\"\n },\n \"text.max-line-length\": 150\n },\n \"xml\": {\n \"type\": \"xml\",\n \"include\": [\n \"(\\\\.svg$)\",\n \"(\\\\.(xml|xsl)$)\"\n ]\n },\n \n \"phutil-library\": {\n \"type\": \"phutil-library\",\n \"include\": \"(^support\/flarc\/.*\\\\.php$)\"\n },\n \"phutil-php\": {\n \"type\": \"xhpast\",\n \"include\": \"(^support\/flarc\/.*\\\\.php$)\",\n \"standard\": \"phutil.xhpast\"\n }\n }\n }\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"181d463bc60ba5ae0b9502472a0c22f59bcaa1e8":{"commit":"181d463bc60ba5ae0b9502472a0c22f59bcaa1e8","tree":"8233369c28812d41e4c9a3f89d6bbe1e3c8a617d","parents":["9ee4cffbc5e280d4181edc0866b30ab684f74894"],"time":"1488999197","author":"Laurent Goudet","summary":"disable postinstall hook","message":"disable postinstall hook","authorEmail":"laurent@freelancer.com"},"9ee4cffbc5e280d4181edc0866b30ab684f74894":{"commit":"9ee4cffbc5e280d4181edc0866b30ab684f74894","tree":"9c6f81c4d8db23cca742e541a3253f9b97ed234d","parents":["16fb3fa324177cf142c87a50870f7c1b7fa0b1a4"],"time":"1488993439","author":"Laurent Goudet","summary":"add npm script to build webapp","message":"add npm script to build webapp","authorEmail":"laurent@freelancer.com"},"16fb3fa324177cf142c87a50870f7c1b7fa0b1a4":{"commit":"16fb3fa324177cf142c87a50870f7c1b7fa0b1a4","tree":"7fe8de5deb6bcd884db51b91d11842205f4564b5","parents":["0eb0f6302e8fc0bdb5fda27cebf355fb11cbeaa6"],"time":"1488993132","author":"Laurent Goudet","summary":"update yarn lockfile","message":"update yarn lockfile","authorEmail":"laurent@freelancer.com"},"0eb0f6302e8fc0bdb5fda27cebf355fb11cbeaa6":{"commit":"0eb0f6302e8fc0bdb5fda27cebf355fb11cbeaa6","tree":"74b5e96c640a7d806db1247584d3ece25ef17c46","parents":["7467434a00354b3588402d9208c1145bdfd8742d","edc467722dae0db815049e97a9cad894aa2d8614"],"time":"1488991623","author":"Laurent Goudet","summary":"Merge remote-tracking branch 'origin\/master' into laurent-webapp","message":"Merge remote-tracking branch 'origin\/master' into laurent-webapp","authorEmail":"laurent@freelancer.com"},"7467434a00354b3588402d9208c1145bdfd8742d":{"commit":"7467434a00354b3588402d9208c1145bdfd8742d","tree":"c5663d9a1e2a23833517d46410066f699611099b","parents":["1ddb857de346293e87ce856b45a3924b3092606f"],"time":"1488991469","author":"Laurent Goudet","summary":"update readme","message":"update readme","authorEmail":"laurent@freelancer.com"},"1ddb857de346293e87ce856b45a3924b3092606f":{"commit":"1ddb857de346293e87ce856b45a3924b3092606f","tree":"8c70af9eeee6a7457179f31372e236a460f78d84","parents":["2fffeeb3cf709d5015bc15808b2d3ca61b944d2e"],"time":"1488991262","author":"Laurent Goudet","summary":"more cleanup","message":"more cleanup","authorEmail":"laurent@freelancer.com"},"2fffeeb3cf709d5015bc15808b2d3ca61b944d2e":{"commit":"2fffeeb3cf709d5015bc15808b2d3ca61b944d2e","tree":"c6d40d09d21b19034620ce6aa3f12d5acb98c933","parents":["2a467dc6590b787ebbab072ea11be0d4ee62956b"],"time":"1488990967","author":"Laurent Goudet","summary":"cleanup","message":"cleanup","authorEmail":"laurent@freelancer.com"},"2a467dc6590b787ebbab072ea11be0d4ee62956b":{"commit":"2a467dc6590b787ebbab072ea11be0d4ee62956b","tree":"498a3e87259e5c1c160463f1077774900b220322","parents":["131f7a148dcfbcadbd3df6d177b7882b006f73f0"],"time":"1488990658","author":"Laurent Goudet","summary":"pluck pluck plucking","message":"pluck pluck plucking","authorEmail":"laurent@freelancer.com"},"131f7a148dcfbcadbd3df6d177b7882b006f73f0":{"commit":"131f7a148dcfbcadbd3df6d177b7882b006f73f0","tree":"4f17b76b5c288f0726738cb8dbe8b91c00286237","parents":["79b6461eb65a7d3a9dd7a5120496b34aed731aea"],"time":"1488990284","author":"Laurent Goudet","summary":"more improvements","message":"more improvements","authorEmail":"laurent@freelancer.com"},"79b6461eb65a7d3a9dd7a5120496b34aed731aea":{"commit":"79b6461eb65a7d3a9dd7a5120496b34aed731aea","tree":"35b936db1e49a3aa6e0486031a1d70bb98fc16fc","parents":["a3f34334da468fa18fce95cfdd6d07057d1c3e88"],"time":"1488986050","author":"Laurent Goudet","summary":"Update cli to rc1","message":"Update cli to rc1","authorEmail":"laurent@freelancer.com"},"a3f34334da468fa18fce95cfdd6d07057d1c3e88":{"commit":"a3f34334da468fa18fce95cfdd6d07057d1c3e88","tree":"41cd820055f91b119d9c8a797bdbd83791eca5f0","parents":["2b096f05e8550a621882e4da5e8d3b1a5f3ddae4"],"time":"1488985757","author":"Laurent Goudet","summary":"Finish renaming","message":"Finish renaming","authorEmail":"laurent@freelancer.com"},"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4":{"commit":"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4","tree":"579fb8566e194b3d80a6543b304c56ffc9263a7a","parents":["203a6aa47f50467ad46e556442f65d2c5aa574c6"],"time":"1488984749","author":"Laurent Goudet","summary":"more renaming","message":"more renaming","authorEmail":"laurent@freelancer.com"},"203a6aa47f50467ad46e556442f65d2c5aa574c6":{"commit":"203a6aa47f50467ad46e556442f65d2c5aa574c6","tree":"3bb4fc3a032bebb279f521ab7fb269f6aba8c600","parents":["99562cd0ca1d33a5132cb132bfb5a79f46c1a057"],"time":"1488978328","author":"Laurent Goudet","summary":"it works","message":"it works","authorEmail":"laurent@freelancer.com"},"99562cd0ca1d33a5132cb132bfb5a79f46c1a057":{"commit":"99562cd0ca1d33a5132cb132bfb5a79f46c1a057","tree":"a90b746681e137aa40e21d6aa2e82be7022cb3d9","parents":["8c26bbd83a354887739377f4beb4a3e82e3905e2"],"time":"1488903326","author":"Laurent Goudet","summary":"bugz","message":"bugz","authorEmail":"laurent@freelancer.com"},"8c26bbd83a354887739377f4beb4a3e82e3905e2":{"commit":"8c26bbd83a354887739377f4beb4a3e82e3905e2","tree":"32398a01d49efebce64b2f14d55cfdf0babc5dc5","parents":["fca85f7440b205d1b05d860cae596e72cae65150"],"time":"1488902573","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"fca85f7440b205d1b05d860cae596e72cae65150":{"commit":"fca85f7440b205d1b05d860cae596e72cae65150","tree":"0b44b65f63fe3bd3a590632ccb4681afd1de402c","parents":["4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c"],"time":"1488819407","author":"Laurent Goudet","summary":"Bugz fixing","message":"Bugz fixing","authorEmail":"laurent@freelancer.com"},"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c":{"commit":"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c","tree":"e86302ebe2ecb73a3e4893f93119efd6f1ea458c","parents":["c3815d83d0278276714c527df4b976ff2c29aa19"],"time":"1488818884","author":"Laurent Goudet","summary":"Dynamic queries handling","message":"Dynamic queries handling","authorEmail":"laurent@freelancer.com"},"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"700414":{"id":"700414","revisionID":"56417","dateCreated":"1488999002","dateModified":"1488999005","sourceControlBaseRevision":"edc467722dae0db815049e97a9cad894aa2d8614","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - update yarn lockfile","unitStatus":"1","lintStatus":"3","changes":[{"id":"9272504","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5236","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5236","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\n+\n+\"@angular\/cli@1.0.0-rc.1\":\n+ version \"1.0.0-rc.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.1.tgz#102b2bf47a9d74a581d6d1821ce2daf0594d3145\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.12\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\", \"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.12\":\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.12.tgz#19142e760a30172806acc7363e590d870cb30c26\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^1.0.2\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@1.3.3, accepts@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@1.1.2, colors@^1.1.0, colors@^1.1.2, colors@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@2.9.x, commander@^2.9.0:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+\"cssnano@>=2.6.1 <4\", cssnano@^3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@2, debug@2.6.1, debug@^2.1.3, debug@^2.2.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@2.2.0, debug@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@1.1.0, depd@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@3, extend@^3.0.0, extend@~3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@1.0.0, finalhandler@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@3.3.2, json3@^3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@1.3.4, mime@1.3.x, mime@^1.2.11, mime@^1.3.4:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+\"minimatch@2 || 3\", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2:\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+mkdirp@0.5.x, \"mkdirp@>=0.5 0\", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+\"nopt@2 || 3\", nopt@~3.0.6:\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+\"npmlog@0 || 1 || 2 || 3 || 4\", npmlog@^4.0.0, npmlog@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@4.1.0, object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@0, osenv@^0.1.0, osenv@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+q@1.4.1, q@^1.1.2, q@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@6.3.1, qs@~6.3.0:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@1.0, readable-stream@~1.0.2:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@2, request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+\"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0:\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@0.1.x, source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@X.X.X, through@^2.3.6:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28, tmp@0.0.x:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@^0.0.31:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+uglify-js@2.8.x, uglify-js@^2.6, uglify-js@^2.7.5:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@1.0.0, unpipe@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@0.10.3, util@^0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@1, which@^1.2.1, which@^1.2.9:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@1.1.1, ws@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xmlbuilder@>=1.0.0, xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n"}]},{"id":"9272503","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272502","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9272501","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9272500","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.key","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN RSA PRIVATE KEY-----\n+MIICWwIBAAKBgQCmipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LV\n+g\/kgt79am1bnF+\/HF880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R\n+1uHyD\/46sYtMejy3n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQAB\n+AoGATqG34hCSf11mWDUPNXjuCcz8eLF8Ugab\/pMngrPR2OWOSKue4y73jmITYBVd\n+96iOlqMAOxpmfFp\/R81PIHdi++Bax1NfSBT8tK0U7HHzkbHEXyvHiBSug78Y14h8\n+Y\/NMZXEvVapY7lapr5ZgOSf2rcKOlceMRsoohl6bGc+55BECQQDPZTw5WxDDe7\/W\n+oYzHy7abLw+A92cP8A6qlwXBik9ko6jtYXvoI454OIr6RsHoFPU9bUkx5G1fvOUZ\n+J3sxfxMZAkEAzZJEwcvmxHizX\/2NZZ8LvVyWGpao07bBcAEvDXDZFOZqKUujukOe\n+iilQD6JZDJTmW9RJmOgdQKeL9ZaTlX3MqwJASMJrbnPUXcB8fQAQM8f0OF06QzSI\n+o77EZnS1QEEVuWjxStZ4ceiHgwXTPBq2zIUNxI8irq5E8OGEPl7riWHbgQJARzqL\n+QGsaRrFb1cLRH4kAVFikWgoh7VnBpMGEQC\/9x9QerLhcvsl3QYAXEZO7LzTYrLDd\n+33Ft0V08jZfjA0VXiQJAOwX6glfDKf79AK1sifFQc\/v0Yu87LIOAwp0zLlsnO0Q9\n+xQV3TdjlNQebfTG+Uw1tmbcCb2wcGFfD199IHpAzIA==\n+-----END RSA PRIVATE KEY-----\n"}]},{"id":"9272499","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.crt","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN CERTIFICATE-----\n+MIICAzCCAWwCCQDlm49KXF45gzANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJB\n+VTETMBEGA1UECBMKU29tZS1TdGF0ZTEQMA4GA1UEChMHR3J1bnRKUzEQMA4GA1UE\n+AxMHMC4wLjAuMDAeFw0xNDAyMTkyMzE1NDRaFw0xNTAyMTkyMzE1NDRaMEYxCzAJ\n+BgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRAwDgYDVQQKEwdHcnVudEpT\n+MRAwDgYDVQQDEwcwLjAuMC4wMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm\n+ipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LVg\/kgt79am1bnF+\/H\n+F880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R1uHyD\/46sYtMejy3\n+n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQABMA0GCSqGSIb3DQEB\n+BQUAA4GBADnTBlN7+Aa8zj2zsUBSUv9w7iYut3ZDvrEY+IJt8EurwA6+Q7rQqVsY\n+an5ztiEESriWvqNIfvWb+Yekhv9sISJFMfApVbimmT6QseQcFEIlRNW5cfukHQVH\n+9dBI7upQO2vN7N9ABo4a3aBANMBxIvCnE+adiqNOTJF\/8qkiAFY9\n+-----END CERTIFICATE-----\n"}]},{"id":"9272498","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9272497","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9272496","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9272495","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9272494","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9272493","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272492","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9272491","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9272490","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-hk2qdvrunqaevlmt3wgn"},"oldPath":"webapp\/src\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272489","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const environment = {\n+ production: false,\n+ gafBaseUrl: 'https:\/\/laurent.syd1.fln-dev.net',\n+ authConfig: {\n+ baseUrl: `https:\/\/laurent.syd1.fln-dev.net\/auth`,\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/api`,\n+ ajaxBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/ajax`,\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n"}]},{"id":"9272488","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272487","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9272486","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272485","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+import 'rxjs\/add\/observable\/merge';\n+import 'rxjs\/add\/observable\/from';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/merge';\n+import 'rxjs\/add\/operator\/mergeMap';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/pluck';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n+import 'rxjs\/add\/operator\/multicast';\n+import 'rxjs\/add\/operator\/scan';\n+import 'rxjs\/add\/operator\/take';\n"}]},{"id":"9272484","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.assign(`${environment.gafBaseUrl}${state.url}`);\n+ return false;\n+ }\n+}\n"}]},{"id":"9272483","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"55","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"55","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ template: `\n+ <div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+\n+ <!-- <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>-->\n+ <\/div>\n+ `,\n+})\n+export class ThreadComponent {\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.messages = this.datastore.list(\n+ 'messages',\n+ this.route.params.map(({threadId}) => threadId), {\n+ query: {\n+ limit: 10\n+ }\n+ }\n+ );\n+ }\n+\n+ sendMessage(message: string) {\n+ this.auth.switchMap(({uid}) =>\n+ this.messages.push({\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ busy: true,\n+ from_user: uid.toString()\n+ })\n+ ).toPromise();\n+ }\n+}\n"}]},{"id":"9272482","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9272481","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9272480","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread.thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9272479","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9272478","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+\n+ <fl-user-avatar [src]=\"thread.owner.avatar\"\n+ class=\"avatar\">\n+ <\/fl-user-avatar>\n+ <div class=\"body\">\n+ <div class=\"body-content-username\"\n+ *ngFor=\"let member of thread.members; let $last = last;\">\n+ {{ member.username }}<span *ngIf=\"!$last\">,<\/span>\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{ thread.message.message }}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9272477","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"33","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9272476","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9272475","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9272474","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9272473","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9272472","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9272471","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9272470","metadata":{"line:first":1,"copy:lines":{"47":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"48":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"49":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"50":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"50","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"50","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ThreadComponent,\n+ EmptyThreadComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n"}]},{"id":"9272469","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"70","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"70","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Thread } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <router-outlet><\/router-outlet>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ \/\/threadsUnreadCount: ObjectObservable<ThreadUnreadCount>;\n+ threadsLimit = new Subject<number>();\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ const uid = this.auth.map(({uid}) => uid.toString());\n+ this.threads = this.datastore.list('threads', uid, {\n+ query: {\n+ limit: this.threadsLimit\n+ .startWith(10)\n+ .scan((acc, curr) => acc + curr)\n+ }\n+ }\n+ );\n+ \/\/this.threadsUnreadCount = this.datastore.list('threadsUnreadCount', uid);\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.next(count);\n+ }\n+\n+ createThread() {\n+ \/\/this.threads.push(...);\n+ }\n+\n+}\n"}]},{"id":"9272468","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9272467","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",3,"-"],"7":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",6,"-"],"8":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",7,"-"],"9":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",8,"-"],"10":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",9,"-"],"24":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",16,"-"],"25":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",17,"-"],"26":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",18,"-"],"27":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",19,"-"],"28":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",20,"-"],"29":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",21,"-"],"30":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",25,"-"],"31":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",26,"-"],"32":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",27,"-"],"33":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",28,"-"],"34":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",29,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { RouterModule, Routes } from '@angular\/router';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { AuthGuard } from '..\/auth-guard.service';\n+\n+const messagingInboxRoutes: Routes = [\n+ {\n+ path: '',\n+ canActivate: [AuthGuard],\n+ component: MessagingInboxComponent,\n+ children: [\n+ {\n+ path: '',\n+ component: EmptyThreadComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: ThreadComponent\n+ }\n+ ]\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forChild(messagingInboxRoutes),\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class MessagingInboxRoutingModule { }\n"}]},{"id":"9272466","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message of messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9272465","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9272464","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9272463","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9272462","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message = new EventEmitter<string>();\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9272461","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9272460","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9272459","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9272458","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/empty-thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: `\n+ <div>\n+ NO THREAD SELECTED\n+ <\/div>\n+ `,\n+})\n+export class EmptyThreadComponent {\n+\n+}\n"}]},{"id":"9272457","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9272456","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9272455","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9272454","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9272453","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.uid) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9272452","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9272451","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9272450","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9272449","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"35","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"35","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n"}]},{"id":"9272448","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9272447","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/user-avatar.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular\/core';\n+@Component({\n+ selector: 'fl-user-avatar',\n+ template: `\n+ <img [src]=\"avatarUrl\" \/>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class UserAvatarComponent implements OnChanges {\n+ private avatarUrl: string;\n+ @Input() src: string;\n+\n+ constructor() {}\n+\n+ ngOnChanges() {\n+ if (this.src) {\n+ this.avatarUrl = `https:\/\/laurent.syd1.fln-dev.net${this.src}`;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9272446","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272445","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n+import { UserAvatarComponent } from '.\/user-avatar.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9272444","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9272443","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9272442","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9272441","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+\n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+\n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+\n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+\n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+\n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+\n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver;\n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9272440","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9272439","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9272438","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9272437","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9272436","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9272435","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9272434","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9272433","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9272432","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use\n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+\n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9272431","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/verification-banner\/verificationBanner.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface VerificationBanners {\n+ [userId: string]: VerificationBanner\n+}\n+\n+export interface VerificationBanner {\n+ email: string;\n+ params: string; \/\/ \"id=15540180&key=8656f81647a32f8331bea7921d0cef14dc9929e8\"\n+ showPhoneVerifyBanner: boolean;\n+ show_resend_btn: boolean;\n+ type_of_notif: string; \/\/ \"email\"\n+ username: string; \/\/ \"laurent\"\n+}\n"}]},{"id":"9272430","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9272429","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Thread, ThreadUnreadCount } from '.\/thread.model';\n+\n+export const threadReducer = (\n+ state: Readonly<{ [userId: string]: Entities<Thread> }> = {},\n+ action: Action\n+): Readonly<{ [userId: string]: Entities<Thread> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ console.log('threadReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ Denoramlize the Thread API response\n+ const contextDetails = data.context_details;\n+ const users = data.users;\n+ const threads = data.threads.reduce((acc: any, thread: any) => {\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.project = contextDetails.projects[context.id];\n+ } else {\n+ context.contest = contextDetails.contests[context.id];\n+ }\n+ context.id = undefined;\n+ const members = thread.thread.members.map((memberId: number) => {\n+ return { ...users[memberId], ...{\n+ \/\/ Avatar CDN URLs returned by the API are crap\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ });\n+ const owner = { ...users[thread.thread.owner], ...{\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ const threadInner = { ...thread.thread, context, members, owner };\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ acc[thread.id] = { ...thread , ...{ thread: threadInner }, messages };\n+ return acc;\n+ }, {});\n+\n+ return mergeEntities(state, threads, ref);\n+\n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n+export const threadUnreadCountReducer =\n+ (state: Entities<ThreadUnreadCount> = {}, action: Action): Entities<ThreadUnreadCount> => {\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ return mergeEntities(state, data.unread_thread_count, ref);\n+ return state;\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9272428","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface ThreadUnreadCount {\n+ unread_thread_count: number;\n+}\n+\n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ type: 'project' | 'contest';\n+ contest?: any;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD\n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9272427","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"73","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"73","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+import { RootModel } from '.\/root.model';\n+\n+import { Thread, ThreadUnreadCount } from '.\/thread\/thread.model';\n+import { threadReducer, threadUnreadCountReducer } from '.\/thread\/thread.reducer';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+\n+import { Observable } from 'rxjs\/Observable';\n+\n+export interface Reference {\n+ path: Path;\n+ query: Query;\n+}\n+\n+export type Path = [keyof RootModel, string];\n+\n+export interface Query {\n+ limit?: number;\n+ offset?: number;\n+}\n+\n+export interface Action {\n+ type: ActionType;\n+ payload?: {\n+ data: any;\n+ ref: Reference;\n+ }\n+}\n+\n+export type ActionType = 'API_FETCH_SUCCESS'\n+ | 'API_POST'\n+ | 'API_POST_SUCCESS';\n+\n+export interface Entities<T> {\n+ entities?: {\n+ [id: string]: T;\n+ };\n+ lists?: {\n+ [query: string]: T[];\n+ };\n+};\n+\n+export const mergeEntities = (state: any, entities: any, ref: Reference) => {\n+ const data = state[ref.path[1]] || {};\n+ const query = 'default';\n+ return { ...state, ...{\n+ [ref.path[1]]: {\n+ entities: {\n+ ...data.entities,\n+ ...entities\n+ },\n+ lists: {\n+ ...data.lists,\n+ ...{\n+ [query]: Object.keys(entities).reduce((acc, id, index) => {\n+ acc[(ref.query.offset || 0) + index] = id;\n+ return acc;\n+ }, data.lists ? ([...data.lists[query]] || []) : [])\n+ }\n+ }\n+ }\n+ }};\n+};\n+\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ threadsUnreadCount: threadUnreadCountReducer,\n+ messages: messageReducer,\n+});\n"}]},{"id":"9272426","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/root.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface RootModel {\n+ threads: {\n+ [userId: string]: Thread;\n+ },\n+ threadsUnreadCount: {\n+ [userId: string]: ThreadUnreadCount\n+ },\n+ messages: {\n+ [threadId: string]: Message;\n+ }\n+};\n"}]},{"id":"9272425","metadata":[],"oldPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","currentPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272424","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Message } from '.\/message.model';\n+\n+export const messageReducer = (\n+ state: Readonly<{ [threadId: string]: Entities<Message> }> = {},\n+ action: Action\n+): Readonly<{ [threadId: string]: Entities<Message> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'messages') {\n+ console.log('messageReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS': {\n+ const { data, ref } = action.payload;\n+ const messages = data.messages.reduce((acc: any, message: any) => {\n+ acc[message.id] = message;\n+ return acc;\n+ }, {});\n+ return mergeEntities(state, messages, ref);\n+ }\n+\n+ case 'API_POST': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ case 'API_POST_SUCCESS': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ \/*case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9272423","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n"}]},{"id":"9272422","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9272421","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"45","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"45","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Reference, Action } from '.\/store';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+import { backend } from '.\/backend';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private ref$: any,\n+ private apiHttp: ApiHttp,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.ref$, this.apiHttp, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ push(body: Object): Observable<boolean> {\n+ console.log('push', body);\n+ return this.ref$.take(1)\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ return Observable.of((<any>backend)[path[0]].post(path[1]))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST',\n+ payload: { data, ref }\n+ }))\n+ .switchMap((config) => this.apiHttp.post(config, body))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST_SUCCESS',\n+ payload: { data, ref }\n+ }))\n+ })\n+ .mapTo(true)\n+ }\n+\n+}\n"}]},{"id":"9272420","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/languages-domains\/languages-domains.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface LanguagesDomains {\n+\n+\n+}\n+\n+{\"status\":\"success\",\"data\":{\"languages\":[{\"id\":\"4\",\"code\":\"af\",\"name\":\"Afrikaans\",\"englishName\":\"Afrikaans\",\"iso6391\":\"af\",\"iso6392\":\"afr\",\"active\":true},{\"id\":\"19\",\"code\":\"bn\",\"name\":\"\\u09ac\\u09be\\u0982\\u09b2\\u09be\",\"englishName\":\"Bengali\",\"iso6391\":\"bn\",\"iso6392\":\"ben\",\"active\":true},{\"id\":\"23\",\"code\":\"ca\",\"name\":\"Catal\\u00e0\",\"englishName\":\"Catalan\",\"iso6391\":\"ca\",\"iso6392\":\"cat\",\"active\":true},{\"id\":\"28\",\"code\":\"cs\",\"name\":\"\\u010ce\\u0161tina\",\"englishName\":\"Czech\",\"iso6391\":\"cs\",\"iso6392\":\"ces\",\"active\":true},{\"id\":\"32\",\"code\":\"da\",\"name\":\"Dansk\",\"englishName\":\"Danish\",\"iso6391\":\"da\",\"iso6392\":\"dan\",\"active\":true},{\"id\":\"33\",\"code\":\"de\",\"name\":\"Deutsch\",\"englishName\":\"German\",\"iso6391\":\"de\",\"iso6392\":\"deu\",\"active\":true},{\"id\":\"37\",\"code\":\"el\",\"name\":\"\\u03b5\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac\",\"englishName\":\"Greek, Modern\",\"iso6391\":\"el\",\"iso6392\":\"ell\",\"active\":true},{\"id\":\"38\",\"code\":\"en\",\"name\":\"English\",\"englishName\":\"English\",\"iso6391\":\"en\",\"iso6392\":\"eng\",\"active\":true},{\"id\":\"40\",\"code\":\"es\",\"name\":\"Espa\\u00f1ol\",\"englishName\":\"Spanish\",\"iso6391\":\"es\",\"iso6392\":\"spa\",\"active\":true},{\"id\":\"45\",\"code\":\"fi\",\"name\":\"Suomi\",\"englishName\":\"Finnish\",\"iso6391\":\"fi\",\"iso6392\":\"fin\",\"active\":true},{\"id\":\"46\",\"code\":\"fil\",\"name\":\"Filipino\",\"englishName\":\"Filipino\",\"iso6391\":\"\",\"iso6392\":\"fil\",\"active\":true},{\"id\":\"49\",\"code\":\"fr\",\"name\":\"Fran\\u00e7ais\",\"englishName\":\"French\",\"iso6391\":\"fr\",\"iso6392\":\"fra\",\"active\":true},{\"id\":\"60\",\"code\":\"hi\",\"name\":\"\\u0939\\u093f\\u0928\\u094d\\u0926\\u0940\",\"englishName\":\"Hindi\",\"iso6391\":\"hi\",\"iso6392\":\"hin\",\"active\":true},{\"id\":\"64\",\"code\":\"hu\",\"name\":\"Magyar\",\"englishName\":\"Hungarian\",\"iso6391\":\"hu\",\"iso6392\":\"hun\",\"active\":true},{\"id\":\"68\",\"code\":\"id\",\"name\":\"Bahasa Indonesia\",\"englishName\":\"Indonesian\",\"iso6391\":\"id\",\"iso6392\":\"ind\",\"active\":true},{\"id\":\"75\",\"code\":\"it\",\"name\":\"Italiano\",\"englishName\":\"Italian\",\"iso6391\":\"it\",\"iso6392\":\"ita\",\"active\":true},{\"id\":\"77\",\"code\":\"ja\",\"name\":\"\\u65e5\\u672c\\u8a9e\",\"englishName\":\"Japanese\",\"iso6391\":\"ja\",\"iso6392\":\"jpn\",\"active\":true},{\"id\":\"87\",\"code\":\"ko\",\"name\":\"\\ud55c\\uad6d\\uc5b4\",\"englishName\":\"Korean\",\"iso6391\":\"ko\",\"iso6392\":\"kor\",\"active\":true},{\"id\":\"109\",\"code\":\"ms\",\"name\":\"Bahasa Malaysia\",\"englishName\":\"Malay\",\"iso6391\":\"ms\",\"iso6392\":\"msa\",\"active\":true},{\"id\":\"113\",\"code\":\"nb\",\"name\":\"Norsk-Bokm\\u00e5l\",\"englishName\":\"Norwegian Bokm\\u00e5l\",\"iso6391\":\"nb\",\"iso6392\":\"nob\",\"active\":true},{\"id\":\"118\",\"code\":\"nl\",\"name\":\"Nederlands\",\"englishName\":\"Dutch\",\"iso6391\":\"nl\",\"iso6392\":\"nld\",\"active\":true},{\"id\":\"132\",\"code\":\"pl\",\"name\":\"Polski\",\"englishName\":\"Polish\",\"iso6391\":\"pl\",\"iso6392\":\"pol\",\"active\":true},{\"id\":\"134\",\"code\":\"pt\",\"name\":\"Portugu\\u00eas\",\"englishName\":\"Portuguese\",\"iso6391\":\"pt\",\"iso6392\":\"por\",\"active\":true},{\"id\":\"138\",\"code\":\"ro\",\"name\":\"Rom\\u00e2n\\u0103\",\"englishName\":\"Romanian\",\"iso6391\":\"ro\",\"iso6392\":\"ron\",\"active\":true},{\"id\":\"139\",\"code\":\"ru\",\"name\":\"\\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439\",\"englishName\":\"Russian\",\"iso6391\":\"ru\",\"iso6392\":\"rus\",\"active\":true},{\"id\":\"148\",\"code\":\"sl\",\"name\":\"Sloven\\u0161\\u010dina\",\"englishName\":\"Slovenian\",\"iso6391\":\"sl\",\"iso6392\":\"slv\",\"active\":true},{\"id\":\"152\",\"code\":\"sq\",\"name\":\"Shqip\",\"englishName\":\"Albanian\",\"iso6391\":\"sq\",\"iso6392\":\"sqi\",\"active\":true},{\"id\":\"157\",\"code\":\"sv\",\"name\":\"Svenska\",\"englishName\":\"Swedish\",\"iso6391\":\"sv\",\"iso6392\":\"swe\",\"active\":true},{\"id\":\"158\",\"code\":\"sw\",\"name\":\"Kiswahili\",\"englishName\":\"Swahili\",\"iso6391\":\"sw\",\"iso6392\":\"swa\",\"active\":true},{\"id\":\"163\",\"code\":\"th\",\"name\":\"\\u0e20\\u0e32\\u0e29\\u0e32\\u0e44\\u0e17\\u0e22\",\"englishName\":\"Thai\",\"iso6391\":\"th\",\"iso6392\":\"tha\",\"active\":true},{\"id\":\"171\",\"code\":\"tr\",\"name\":\"T\\u00fcrk\\u00e7e\",\"englishName\":\"Turkish\",\"iso6391\":\"tr\",\"iso6392\":\"tur\",\"active\":true},{\"id\":\"178\",\"code\":\"uk\",\"name\":\"\\u0423\\u043a\\u0440\\u0430\\u0457\\u043d\\u0441\\u044c\\u043a\\u0430\",\"englishName\":\"Ukrainian\",\"iso6391\":\"uk\",\"iso6392\":\"ukr\",\"active\":true},{\"id\":\"182\",\"code\":\"vi\",\"name\":\"Ti\\u1ebfng Vi\\u1ec7t\",\"englishName\":\"Vietnamese\",\"iso6391\":\"vi\",\"iso6392\":\"vie\",\"active\":true},{\"id\":\"190\",\"code\":\"zh\",\"name\":\"\\u4e2d\\u6587(\\u7b80\\u4f53)\",\"englishName\":\"Chinese\",\"iso6391\":\"zh\",\"iso6392\":\"zho\",\"active\":true}],\"domains\":[{\"name\":\"North America\",\"domains\":[{\"id\":\"1\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\",\"pattern\":\"\\\/freelancer.com$\\\/\",\"name\":\"US (International)\",\"info\":\"Go to global site\",\"info_selected\":\"Stay in US\",\"flag_small\":\"us.png\",\"flag_big\":\"us-big.png\",\"sequence\":\"200\",\"short_name\":\"usa\",\"domain_switcher_region_name\":\"North America\",\"current\":true},{\"id\":\"9\",\"domain_name\":\"freelancer.ca\",\"url\":\"https:\\\/\\\/www.freelancer.ca\",\"pattern\":\"\\\/freelancer.ca$\\\/\",\"name\":\"Canada\",\"info\":\"Go to CA site\",\"info_selected\":\"Stay in CA\",\"flag_small\":\"ca.png\",\"flag_big\":\"ca-big.png\",\"sequence\":\"210\",\"short_name\":\"canada\",\"domain_switcher_region_name\":\"North America\"},{\"id\":\"13\",\"domain_name\":\"freelancer.com.jm\",\"url\":\"https:\\\/\\\/www.freelancer.com.jm\",\"pattern\":\"\\\/freelancer.com.jm$\\\/\",\"name\":\"Jamaica\",\"info\":\"Go to JM site\",\"info_selected\":\"Stay in JM\",\"flag_small\":\"jm.png\",\"flag_big\":\"jm-big.png\",\"sequence\":\"220\",\"short_name\":\"jamaica\",\"domain_switcher_region_name\":\"North America\"}]},{\"name\":\"Africa\",\"domains\":[{\"id\":\"11\",\"domain_name\":\"freelancer.co.za\",\"url\":\"https:\\\/\\\/www.freelancer.co.za\",\"pattern\":\"\\\/freelancer.co.za$\\\/\",\"name\":\"South Africa\",\"info\":\"Go to ZA site\",\"info_selected\":\"Stay in ZA\",\"flag_small\":\"za.png\",\"flag_big\":\"za-big.png\",\"sequence\":\"500\",\"short_name\":\"south-africa\",\"domain_switcher_region_name\":\"Africa\"},{\"id\":\"55\",\"domain_name\":\"freelancer.co.ke\",\"url\":\"https:\\\/\\\/www.freelancer.co.ke\",\"pattern\":\"\\\/freelancer.co.ke$\\\/\",\"name\":\"Kenya\",\"info\":\"Go to KE site\",\"info_selected\":\"Stay in KE\",\"flag_small\":\"ke.png\",\"flag_big\":\"ke-big.png\",\"sequence\":\"510\",\"short_name\":\"kenya\",\"domain_switcher_region_name\":\"Africa\"}]},{\"name\":\"Europe\",\"domains\":[{\"id\":\"4\",\"domain_name\":\"freelancer.co.uk\",\"url\":\"https:\\\/\\\/www.freelancer.co.uk\",\"pattern\":\"\\\/freelancer.co.uk$\\\/\",\"name\":\"United Kingdom\",\"info\":\"Go to UK site\",\"info_selected\":\"Stay in UK\",\"flag_small\":\"uk.png\",\"flag_big\":\"uk-big.png\",\"sequence\":\"600\",\"short_name\":\"uk\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"10\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/eu\\\/welcome.php\",\"pattern\":\"\\\/freelancer.eu$\\\/\",\"name\":\"European Union\",\"info\":\"Go to EU site\",\"info_selected\":\"Stay in EU\",\"flag_small\":\"eu.png\",\"flag_big\":\"eu-big.png\",\"sequence\":\"610\",\"short_name\":\"europe-union\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"22\",\"domain_name\":\"fr.freelancer.com\",\"url\":\"https:\\\/\\\/www.fr.freelancer.com\",\"pattern\":\"\\\/fr.freelancer.com$\\\/\",\"name\":\"France\",\"info\":\"Go to FR site\",\"info_selected\":\"Stay in FR\",\"flag_small\":\"fr.png\",\"flag_big\":\"fr-big.png\",\"sequence\":\"620\",\"short_name\":\"france\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"8\",\"domain_name\":\"freelancer.de\",\"url\":\"https:\\\/\\\/www.freelancer.de\",\"pattern\":\"\\\/freelancer.de$\\\/\",\"name\":\"Germany\",\"info\":\"Go to DE site\",\"info_selected\":\"Stay in DE\",\"flag_small\":\"de.png\",\"flag_big\":\"de-big.png\",\"sequence\":\"630\",\"short_name\":\"germany\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"42\",\"domain_name\":\"freelancer.gr\",\"url\":\"https:\\\/\\\/www.freelancer.gr\",\"pattern\":\"\\\/freelancer.gr$\\\/\",\"name\":\"Greece\",\"info\":\"Go to GR site\",\"info_selected\":\"Stay in GR\",\"flag_small\":\"gr.png\",\"flag_big\":\"gr-big.png\",\"sequence\":\"640\",\"short_name\":\"greece\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"35\",\"domain_name\":\"freelancer.pt\",\"url\":\"https:\\\/\\\/www.freelancer.pt\",\"pattern\":\"\\\/freelancer.pt$\\\/\",\"name\":\"Portugal\",\"info\":\"Go to PT site\",\"info_selected\":\"Stay in PT\",\"flag_small\":\"pt.png\",\"flag_big\":\"pt-big.png\",\"sequence\":\"650\",\"short_name\":\"portugal\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"14\",\"domain_name\":\"freelancer.es\",\"url\":\"https:\\\/\\\/www.freelancer.es\",\"pattern\":\"\\\/freelancer.es$\\\/\",\"name\":\"Spain\",\"info\":\"Go to ES site\",\"info_selected\":\"Stay in ES\",\"flag_small\":\"es.png\",\"flag_big\":\"es-big.png\",\"sequence\":\"660\",\"short_name\":\"spain\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"45\",\"domain_name\":\"freelancer.cz\",\"url\":\"https:\\\/\\\/www.freelancer.cz\",\"pattern\":\"\\\/freelancer.cz$\\\/\",\"name\":\"Czech Republic\",\"info\":\"Go to CZ site\",\"info_selected\":\"Stay in CZ\",\"flag_small\":\"cz.png\",\"flag_big\":\"cz-big.png\",\"sequence\":\"665\",\"short_name\":\"czech-republic\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"33\",\"domain_name\":\"freelancer.se\",\"url\":\"https:\\\/\\\/www.freelancer.se\",\"pattern\":\"\\\/freelancer.se$\\\/\",\"name\":\"Sweden\",\"info\":\"Go to SV site\",\"info_selected\":\"Stay in SV\",\"flag_small\":\"sv.png\",\"flag_big\":\"sv-big.png\",\"sequence\":\"670\",\"short_name\":\"sweden\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"43\",\"domain_name\":\"freelancer.is\",\"url\":\"https:\\\/\\\/www.freelancer.is\",\"pattern\":\"\\\/freelancer.is$\\\/\",\"name\":\"Iceland\",\"info\":\"Go to IS site\",\"info_selected\":\"Stay in IS\",\"flag_small\":\"is.png\",\"flag_big\":\"is-big.png\",\"sequence\":\"680\",\"short_name\":\"iceland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"50\",\"domain_name\":\"freelancer.ie\",\"url\":\"https:\\\/\\\/www.freelancer.ie\",\"pattern\":\"\\\/freelancer.ie$\\\/\",\"name\":\"Ireland\",\"info\":\"Go to IE site\",\"info_selected\":\"Stay in IE\",\"flag_small\":\"ie.png\",\"flag_big\":\"ie-big.png\",\"sequence\":\"685\",\"short_name\":\"ireland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"26\",\"domain_name\":\"freelancer.co.it\",\"url\":\"https:\\\/\\\/www.freelancer.co.it\",\"pattern\":\"\\\/freelancer.co.it$\\\/\",\"name\":\"Italy\",\"info\":\"Go to IT site\",\"info_selected\":\"Stay in IT\",\"flag_small\":\"it.png\",\"flag_big\":\"it-big.png\",\"sequence\":\"690\",\"short_name\":\"italy\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"27\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/changeLanguage.php?lang=nl\",\"pattern\":\"\\\/freelancer.co.nl$\\\/\",\"name\":\"Netherlands\",\"info\":\"Go to NL site\",\"info_selected\":\"Stay in NL\",\"flag_small\":\"nl.png\",\"flag_big\":\"nl-big.png\",\"sequence\":\"700\",\"short_name\":\"netherlands\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"28\",\"domain_name\":\"tr.freelancer.com\",\"url\":\"https:\\\/\\\/www.tr.freelancer.com\",\"pattern\":\"\\\/tr.freelancer.com$\\\/\",\"name\":\"Turkey\",\"info\":\"Go to TR site\",\"info_selected\":\"Stay in TR\",\"flag_small\":\"tr.png\",\"flag_big\":\"tr-big.png\",\"sequence\":\"710\",\"short_name\":\"turkey\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"36\",\"domain_name\":\"freelancer.pl\",\"url\":\"https:\\\/\\\/www.freelancer.pl\",\"pattern\":\"\\\/freelancer.pl$\\\/\",\"name\":\"Poland\",\"info\":\"Go to PL site\",\"info_selected\":\"Stay in PL\",\"flag_small\":\"pl.png\",\"flag_big\":\"pl-big.png\",\"sequence\":\"720\",\"short_name\":\"poland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"39\",\"domain_name\":\"freelancer.co.ro\",\"url\":\"https:\\\/\\\/www.freelancer.co.ro\",\"pattern\":\"\\\/freelancer.co.ro$\\\/\",\"name\":\"Romania\",\"info\":\"Go to RO site\",\"info_selected\":\"Stay in RO\",\"flag_small\":\"ro.png\",\"flag_big\":\"ro-big.png\",\"sequence\":\"730\",\"short_name\":\"romania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"40\",\"domain_name\":\"freelancer.com.ru\",\"url\":\"https:\\\/\\\/www.freelancer.com.ru\",\"pattern\":\"\\\/freelancer.com.ru$\\\/\",\"name\":\"Russia\",\"info\":\"Go to RU site\",\"info_selected\":\"Stay in RU\",\"flag_small\":\"ru.png\",\"flag_big\":\"ru-big.png\",\"sequence\":\"740\",\"short_name\":\"russia\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"47\",\"domain_name\":\"freelancer.com.ua\",\"url\":\"https:\\\/\\\/www.freelancer.com.ua\",\"pattern\":\"\\\/freelancer.com.ua$\\\/\",\"name\":\"Ukraine\",\"info\":\"Go to UA site\",\"info_selected\":\"Stay in UA\",\"flag_small\":\"ua.png\",\"flag_big\":\"ua-big.png\",\"sequence\":\"1090\",\"short_name\":\"ukraine\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"48\",\"domain_name\":\"freelancer.no\",\"url\":\"https:\\\/\\\/www.freelancer.no\",\"pattern\":\"\\\/freelancer.no$\\\/\",\"name\":\"Norway\",\"info\":\"Go to NO site\",\"info_selected\":\"Stay in NO\",\"flag_small\":\"no.png\",\"flag_big\":\"no-big.png\",\"sequence\":\"1100\",\"short_name\":\"norway\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"57\",\"domain_name\":\"freelancer.hu\",\"url\":\"https:\\\/\\\/www.freelancer.hu\",\"pattern\":\"\\\/freelancer.hu$\\\/\",\"name\":\"Hungary\",\"info\":\"Go to HU site\",\"info_selected\":\"Stay in HU\",\"flag_small\":\"hu.png\",\"flag_big\":\"hu-big.png\",\"sequence\":\"1110\",\"short_name\":\"hungary\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"52\",\"domain_name\":\"fi.freelancer.com\",\"url\":\"https:\\\/\\\/www.fi.freelancer.com\",\"pattern\":\"\\\/fi.freelancer.com$\\\/\",\"name\":\"Finland\",\"info\":\"Go to FI site\",\"info_selected\":\"Stay in FI\",\"flag_small\":\"fi.png\",\"flag_big\":\"fi-big.png\",\"sequence\":\"1120\",\"short_name\":\"finland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"53\",\"domain_name\":\"dk.freelancer.com\",\"url\":\"https:\\\/\\\/www.dk.freelancer.com\",\"pattern\":\"\\\/dk.freelancer.com$\\\/\",\"name\":\"Denmark\",\"info\":\"Go to DK site\",\"info_selected\":\"Stay in DK\",\"flag_small\":\"dk.png\",\"flag_big\":\"dk-big.png\",\"sequence\":\"1130\",\"short_name\":\"denmark\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"56\",\"domain_name\":\"freelancer.com.al\",\"url\":\"https:\\\/\\\/www.freelancer.com.al\",\"pattern\":\"\\\/freelancer.com.al$\\\/\",\"name\":\"Albania\",\"info\":\"Go to AL site\",\"info_selected\":\"Stay in AL\",\"flag_small\":\"al.png\",\"flag_big\":\"al-big.png\",\"sequence\":\"1140\",\"short_name\":\"albania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"51\",\"domain_name\":\"freelancer.si\",\"url\":\"https:\\\/\\\/www.freelancer.si\",\"pattern\":\"\\\/freelancer.si$\\\/\",\"name\":\"Slovenia\",\"info\":\"Go to SI site\",\"info_selected\":\"Stay in SI\",\"flag_small\":\"si.png\",\"flag_big\":\"si-big.png\",\"sequence\":\"1150\",\"short_name\":\"slovenia\",\"domain_switcher_region_name\":\"Europe\"}]},{\"name\":\"Asia Pacific\",\"domains\":[{\"id\":\"3\",\"domain_name\":\"freelancer.com.au\",\"url\":\"https:\\\/\\\/www.freelancer.com.au\",\"pattern\":\"\\\/freelancer.com.au$\\\/\",\"name\":\"Australia\",\"info\":\"Go to Australia site\",\"info_selected\":\"Stay in Australia\",\"flag_small\":\"au.png\",\"flag_big\":\"au-big.png\",\"sequence\":\"800\",\"short_name\":\"australia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"2\",\"domain_name\":\"freelancer.co.nz\",\"url\":\"https:\\\/\\\/www.freelancer.co.nz\",\"pattern\":\"\\\/freelancer.co.nz$\\\/\",\"name\":\"New Zealand\",\"info\":\"Go to New Zealand site\",\"info_selected\":\"Stay in New Zealand\",\"flag_small\":\"nz.png\",\"flag_big\":\"nz-big.png\",\"sequence\":\"810\",\"short_name\":\"new-zealand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"5\",\"domain_name\":\"freelancer.hk\",\"url\":\"https:\\\/\\\/www.freelancer.hk\",\"pattern\":\"\\\/freelancer.hk$\\\/\",\"name\":\"Hong Kong\",\"info\":\"Go to HK site\",\"info_selected\":\"Stay in HK\",\"flag_small\":\"hk.png\",\"flag_big\":\"hk-big.png\",\"sequence\":\"820\",\"short_name\":\"hong-kong\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"29\",\"domain_name\":\"freelancer.com.bd\",\"url\":\"https:\\\/\\\/www.freelancer.com.bd\",\"pattern\":\"\\\/freelancer.com.bd$\\\/\",\"name\":\"Bangladesh\",\"info\":\"Go to BD site\",\"info_selected\":\"Stay in BD\",\"flag_small\":\"bd.png\",\"flag_big\":\"bd-big.png\",\"sequence\":\"830\",\"short_name\":\"bangladesh\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"12\",\"domain_name\":\"freelancer.in\",\"url\":\"https:\\\/\\\/www.freelancer.in\",\"pattern\":\"\\\/freelancer.in$\\\/\",\"name\":\"India\",\"info\":\"Go to IN site\",\"info_selected\":\"Stay in IN\",\"flag_small\":\"in.png\",\"flag_big\":\"in-big.png\",\"sequence\":\"840\",\"short_name\":\"india\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"24\",\"domain_name\":\"freelancer.co.id\",\"url\":\"https:\\\/\\\/www.freelancer.co.id\",\"pattern\":\"\\\/freelancer.co.id$\\\/\",\"name\":\"Indonesia\",\"info\":\"Go to ID site\",\"info_selected\":\"Stay in ID\",\"flag_small\":\"id.png\",\"flag_big\":\"id-big.png\",\"sequence\":\"850\",\"short_name\":\"indo\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"41\",\"domain_name\":\"freelancer.jp\",\"url\":\"https:\\\/\\\/www.freelancer.jp\",\"pattern\":\"\\\/freelancer.jp$\\\/\",\"name\":\"Japan\",\"info\":\"Go to JP site\",\"info_selected\":\"Stay in JP\",\"flag_small\":\"jp.png\",\"flag_big\":\"jp-big.png\",\"sequence\":\"860\",\"short_name\":\"japan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"49\",\"domain_name\":\"freelancer.co.kr\",\"url\":\"https:\\\/\\\/www.freelancer.co.kr\",\"pattern\":\"\\\/freelancer.co.kr$\\\/\",\"name\":\"Korea, Republic of\",\"info\":\"Go to KR site\",\"info_selected\":\"Stay in KR\",\"flag_small\":\"kr.png\",\"flag_big\":\"kr-big.png\",\"sequence\":\"865\",\"short_name\":\"korea-republic-of\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"30\",\"domain_name\":\"my.freelancer.com\",\"url\":\"https:\\\/\\\/www.my.freelancer.com\",\"pattern\":\"\\\/my.freelancer.com$\\\/\",\"name\":\"Malaysia\",\"info\":\"Go to MS site\",\"info_selected\":\"Stay in MS\",\"flag_small\":\"ms.png\",\"flag_big\":\"ms-big.png\",\"sequence\":\"870\",\"short_name\":\"malaysia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"20\",\"domain_name\":\"freelancer.pk\",\"url\":\"https:\\\/\\\/www.freelancer.pk\",\"pattern\":\"\\\/freelancer.pk$\\\/\",\"name\":\"Pakistan\",\"info\":\"Go to PK site\",\"info_selected\":\"Stay in PK\",\"flag_small\":\"pk.png\",\"flag_big\":\"pk-big.png\",\"sequence\":\"880\",\"short_name\":\"pakistan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"7\",\"domain_name\":\"freelancer.ph\",\"url\":\"https:\\\/\\\/www.freelancer.ph\",\"pattern\":\"\\\/freelancer.ph$\\\/\",\"name\":\"Philippines\",\"info\":\"Go to PH site\",\"info_selected\":\"Stay in PH\",\"flag_small\":\"ph.png\",\"flag_big\":\"ph-big.png\",\"sequence\":\"890\",\"short_name\":\"philippines\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"38\",\"domain_name\":\"freelancer.cn\",\"url\":\"https:\\\/\\\/www.freelancer.cn\",\"pattern\":\"\\\/freelancer.cn$\\\/\",\"name\":\"P.R. China\",\"info\":\"Go to ZH site\",\"info_selected\":\"Stay in ZH\",\"flag_small\":\"zh.png\",\"flag_big\":\"zh-big.png\",\"sequence\":\"900\",\"short_name\":\"china\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"6\",\"domain_name\":\"freelancer.sg\",\"url\":\"https:\\\/\\\/www.freelancer.sg\",\"pattern\":\"\\\/freelancer.sg$\\\/\",\"name\":\"Singapore\",\"info\":\"Go to SG site\",\"info_selected\":\"Stay in SG\",\"flag_small\":\"sg.png\",\"flag_big\":\"sg-big.png\",\"sequence\":\"910\",\"short_name\":\"singapore\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"44\",\"domain_name\":\"freelancer.co.th\",\"url\":\"https:\\\/\\\/www.freelancer.co.th\",\"pattern\":\"\\\/freelancer.co.th$\\\/\",\"name\":\"Thailand\",\"info\":\"Go to TH site\",\"info_selected\":\"Stay in TH\",\"flag_small\":\"th.png\",\"flag_big\":\"th-big.png\",\"sequence\":\"940\",\"short_name\":\"thailand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"54\",\"domain_name\":\"vn.freelancer.com\",\"url\":\"https:\\\/\\\/www.vn.freelancer.com\",\"pattern\":\"\\\/vn.freelancer.com$\\\/\",\"name\":\"Vietnam\",\"info\":\"Go to VN site\",\"info_selected\":\"Stay in VN\",\"flag_small\":\"vn.png\",\"flag_big\":\"vn-big.png\",\"sequence\":\"950\",\"short_name\":\"vietnam\",\"domain_switcher_region_name\":\"Asia Pacific\"}]},{\"name\":\"Latin America\",\"domains\":[{\"id\":\"18\",\"domain_name\":\"freelancer.com.ar\",\"url\":\"https:\\\/\\\/www.freelancer.com.ar\",\"pattern\":\"\\\/freelancer.com.ar$\\\/\",\"name\":\"Argentina\",\"info\":\"Go to AR site\",\"info_selected\":\"Stay in AR\",\"flag_small\":\"ar.png\",\"flag_big\":\"ar-big.png\",\"sequence\":\"1000\",\"short_name\":\"argentina\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"25\",\"domain_name\":\"br.freelancer.com\",\"url\":\"https:\\\/\\\/www.br.freelancer.com\",\"pattern\":\"\\\/br.freelancer.com$\\\/\",\"name\":\"Brazil\",\"info\":\"Go to BR site\",\"info_selected\":\"Stay in BR\",\"flag_small\":\"br.png\",\"flag_big\":\"br-big.png\",\"sequence\":\"1010\",\"short_name\":\"brazil\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"46\",\"domain_name\":\"freelancer.cl\",\"url\":\"https:\\\/\\\/www.freelancer.cl\",\"pattern\":\"\\\/freelancer.cl$\\\/\",\"name\":\"Chile\",\"info\":\"Go to CL site\",\"info_selected\":\"Stay in CL\",\"flag_small\":\"cl.png\",\"flag_big\":\"cl-big.png\",\"sequence\":\"1020\",\"short_name\":\"chile\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"37\",\"domain_name\":\"freelancer.com.co\",\"url\":\"https:\\\/\\\/www.freelancer.com.co\",\"pattern\":\"\\\/freelancer.com.co$\\\/\",\"name\":\"Colombia\",\"info\":\"Go to CO site\",\"info_selected\":\"Stay in CO\",\"flag_small\":\"co.png\",\"flag_big\":\"co-big.png\",\"sequence\":\"1030\",\"short_name\":\"colombia\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"17\",\"domain_name\":\"freelancer.ec\",\"url\":\"https:\\\/\\\/www.freelancer.ec\",\"pattern\":\"\\\/freelancer.ec$\\\/\",\"name\":\"Ecuador\",\"info\":\"Go to EC site\",\"info_selected\":\"Stay in EC\",\"flag_small\":\"ec.png\",\"flag_big\":\"ec-big.png\",\"sequence\":\"1040\",\"short_name\":\"ecuador\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"15\",\"domain_name\":\"freelancer.mx\",\"url\":\"https:\\\/\\\/www.freelancer.mx\",\"pattern\":\"\\\/freelancer.mx$\\\/\",\"name\":\"Mexico\",\"info\":\"Go to MX site\",\"info_selected\":\"Stay in MX\",\"flag_small\":\"mx.png\",\"flag_big\":\"mx-big.png\",\"sequence\":\"1050\",\"short_name\":\"mexico\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"16\",\"domain_name\":\"freelancer.com.pe\",\"url\":\"https:\\\/\\\/www.freelancer.com.pe\",\"pattern\":\"\\\/freelancer.com.pe$\\\/\",\"name\":\"Peru\",\"info\":\"Go to PE site\",\"info_selected\":\"Stay in PE\",\"flag_small\":\"pe.png\",\"flag_big\":\"pe-big.png\",\"sequence\":\"1070\",\"short_name\":\"peru\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"31\",\"domain_name\":\"freelancer.uy\",\"url\":\"https:\\\/\\\/www.freelancer.uy\",\"pattern\":\"\\\/freelancer.uy$\\\/\",\"name\":\"Uruguay\",\"info\":\"Go to UY site\",\"info_selected\":\"Stay in UY\",\"flag_small\":\"uy.png\",\"flag_big\":\"uy-big.png\",\"sequence\":\"1080\",\"short_name\":\"uruguay\",\"domain_swit:cher_region_name\":\"Latin America\"}]}]}}\n"}]},{"id":"9272419","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9272418","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"95","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"95","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Reference, Path, Query, Action } from '.\/store'\n+import { backend } from '.\/backend';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+export interface ListOptions {\n+ query: QueryObservable;\n+}\n+\n+export interface QueryObservable {\n+ limit?: number|Observable<number>;\n+ offset?: number|Observable<number>;\n+}\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<RootModel>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {}\n+\n+ list<a extends keyof RootModel, b extends keyof RootModel[a]>(\n+ key1: a,\n+ key2: b|Observable<b>,\n+ options?: ListOptions\n+ ): ListObservable<Array<RootModel[a][b]>> {\n+\n+ const pathStream = Observable.combineLatest([\n+ (key1 instanceof Observable) ? key1 : Observable.of(key1),\n+ (key2 instanceof Observable) ? key2 : Observable.of(key2)\n+ ]);\n+\n+ const query = options ? options.query : {};\n+ const queryStream = Observable.combineLatest([\n+ (query.limit instanceof Observable) ? query.limit : Observable.of(query.limit),\n+ (query.offset instanceof Observable) ? query.offset : Observable.of(query.offset)\n+ ], (limit: number, offset: number) => ({ limit, offset }));\n+\n+ const refStream = Observable.combineLatest(\n+ [pathStream, queryStream],\n+ (path: Path, query: Query): Reference => ({path, query})\n+ )\n+ .multicast(() => new ReplaySubject(1))\n+ .refCount();\n+\n+ const fetchStream = refStream\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ if (backend[path[0]] && backend[path[0]].fetch) {\n+ return Observable.of((<any>backend)[path[0]].fetch(path[1], query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => {\n+ this.store.dispatch(<Action>{\n+ type: 'API_FETCH_SUCCESS',\n+ payload: { data, ref }\n+ })\n+ })\n+ .mapTo({path, query});\n+ } else {\n+ return Observable.empty();\n+ }\n+ });\n+\n+ \/\/ TODO: WebSocket -> liveStream\n+\n+ return new ListObservable(refStream, this.apiHttp, this.store,\n+ Observable.merge(refStream, fetchStream)\n+ .switchMap(({path, query}: any) =>\n+ this.store.pluck(...path)\n+ )\n+ .distinctUntilChanged()\n+ .map((data: any) => {\n+ if (data && data.lists) {\n+ \t\t\t\t\treturn (<any>data).lists['default']\n+ \t\t\t\t\t .slice(query.offset || 0)\n+ \t\t\t\t\t .map((id: any) => (<any>data).entities[<string>id]);\n+ } else {\n+ return [];\n+ }\n+ })\n+ );\n+\n+ }\n+\n+ \/\/ TODO: object() => new ObjectObservable()\n+\n+}\n"}]},{"id":"9272417","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5,\n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9272416","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9272415","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/backend.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Backend {\n+ fetch?: (key: string, query: any) => {\n+ endpoint: string;\n+ params: {\n+ [key: string]: string|number;\n+ };\n+ },\n+ post?: (key: string) => {\n+ endpoint: string;\n+ }\n+};\n+\n+export const backend: { [k: string]: Backend } = {\n+ threads: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/threads`,\n+ params: {\n+ unread_count: 'true',\n+ last_message: 'true',\n+ message_details: 'true',\n+ context_details: 'true',\n+ user_details: 'true',\n+ limit: query.limit\n+ }\n+ })\n+ },\n+ messages: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/messages`,\n+ params: {\n+ 'threads[]': key,\n+ }\n+ }),\n+ post: (key) => ({\n+ endpoint: `messages\/0.1\/threads\/${key}\/messages\/`,\n+ params: {\n+ thread_id: key\n+ }\n+ })\n+ }\n+};\n"}]},{"id":"9272414","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.params)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ post(config: any, payload: Object): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.post(`${this.config.apiBaseUrl}\/${config.endpoint}`,\n+ this.serialize({ ...payload, ...config.params }), {\n+ headers: authHeader,\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid , token}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${uid};${token}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ const params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ params.set('compact', 'true');\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9272413","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9272412","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n"}]},{"id":"9272411","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9272410","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9272409","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ uid: number;\n+ token: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const uid = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10);\n+ const token = this.cookies.get(this.authConfig.authHashCookie);\n+ this.next({ uid, token });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9272408","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n"}]},{"id":"9272407","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9272406","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-zh2mcyfe34453777u7yy"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272405","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9272404","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888 -ssl\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.1\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9272403","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9272402","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9272401","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9272400","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9272399","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+See [The Webapp Playbook](https:\/\/phabricator.freelancer.com\/w\/gaf\/app).\n"}]},{"id":"9272398","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6\n"}]},{"id":"9272397","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9272396","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9272395","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9272394","metadata":{"line:first":727},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"974","newLength":"975","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/view_new.php$ https:\/\/$http_host\/projects\/$arg_id.html permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # data.freelancer.com remap\n rewrite ^\/data\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/$2\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/$2\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/ https:\/\/$host\/find\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?no_redirect=true&mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n rewrite ^\/buyers\/welcome-employer\\.php$ https:\/\/$host\/onboard permanent;\n rewrite ^\/onboard$ \/buyers\/welcome-employer.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/user-sessions\/([0-9]+)$ \/admin\/support-queue\/user-support-sessions.php?userId=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php last;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z0-9\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # Cluster Directory Page\n rewrite ^\/outsource-directory\/?$ \/seo\/cluster-page-directory.php last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n \n rewrite ^\/adroll\/([\\w-\\.]+)\/([\\w-\\.]+)\/ https:\/\/$host\/hire\/$1\/$2\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/([\\w-\\.]+)\/([\\w-\\.]+) https:\/\/$host\/hire\/$1\/$2\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/([\\w-\\.]+)\/ https:\/\/$host\/hire\/$1\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/([\\w-\\.]+) https:\/\/$host\/hire\/$1\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/ https:\/\/$host\/hire\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll$ https:\/\/$host\/hire\/?inline=false&no_redirect=true permanent;\n \n rewrite ^\/fb\/([\\w-\\.]+)\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/fb\/([\\w-\\.]+)\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/fb\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/fb\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/fb\/ https:\/\/$host\/find\/ permanent;\n rewrite ^\/fb$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/android-app-download\/?$ https:\/\/play.google.com\/store\/apps\/details?id=com.freelancer.android.messenger&utm_source=massmailer&utm_medium=email&utm_campaign=emailblast2.0 permanent;\n rewrite ^\/android-app-beta(\/)?$ https:\/\/$host\/mobile-app\/ permanent;\n \n # S3 backed requests\n rewrite ^\/(sitemap(?:_new)?_index.*\\.xml)$ \/s3.php?bucket=sitemap&key=$1 last;\n"}]},{"id":"9272393","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9272392","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter([\n 'contexts' => [\n new \\thrift\\messages\\Context([\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n ]),\n ],\n 'thread_members' => [$uid => $uid],\n ]);\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(['user_id' => $user]),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = [];\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = [\n 'skin\/inbox-page.less',\n ];\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9272391","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9272390","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272389","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9272388","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9272387","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9272386","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9272385","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { RouterModule, Routes } from '@angular\/router';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n-\n-const messagingInboxRoutes: Routes = [\n- {\n- path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forChild(messagingInboxRoutes),\n- ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class MessagingInboxRoutingModule { }\n"}]},{"id":"9272384","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9272383","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9272382","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9272381","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9272380","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9272379","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9272378","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9272377","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9272376","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9272375","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9272374","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9272373","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9272372","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9272371","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"40","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"40","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n-import { Thread, ThreadService } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-list',\n- template: `\n- <div *ngFor=\"let thread of threads;\">\n- - - - - - - - - - - - - - - - - - - - - - -\n- <thread-item [thread]=\"thread\"\n- openThread=\"onOpenThread($event)\">\n- <\/thread-item>\n- - - - - - - - - - - - - - - - - - - - - - -\n- <\/div>\n- `,\n-})\n-export class ThreadListComponent implements OnInit {\n- @Output() openThread = new EventEmitter<Thread>();\n-\n- threads: Thread[];\n-\n- constructor(private threadService: ThreadService) {}\n-\n- getThreads() {\n- this.threads = [{\n- people: ['Laurent', 'Andrew', 'Geoff'],\n- }, {\n- people: ['Steven', 'Diego'],\n- }];\n- \/\/ this.threadService.getThreads()\n- \/\/ .subscribe(threads => this.threads = threads);\n- }\n-\n- ngOnInit() {\n- this.getThreads();\n- }\n-\n- onOpenThread($event: Thread) {\n- this.openThread.emit($event);\n- }\n-}\n"}]},{"id":"9272370","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9272369","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9272368","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9272367","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9272366","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9272365","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9272364","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9272363","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9272362","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9272361","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9272360","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"398","newLength":"373","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"preconnect\" href=\"\/\/www.f-cdn.com\" crossorigin>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!show_support_banner!\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n !show_support_banner!}}\n ?IS_AUTH?}}\n {{?show_support_banner?\n <div class=\"important-announcement\" data-target=\"support-important-announcement\">\n {{<systemjs_module('support-banner')>}}\n <\/div>\n ?show_support_banner?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{!skip_messaging_modules!\n {{<systemjs_server_data(\"messaging\", \"hideMessaging\", \"{{hide_messaging}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <div class=\"Chat\">\n <fl-messaging-chat class=\"ChatBox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n class=\"ChatBox-wrapper-inner\"\n ng-repeat=\"attributes in ctrl.chatboxes | visible: ctrl.hideMessaging\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n \n <!-- contact list section -->\n {{!hide_messaging!\n <fl-messaging-contacts-new class=\"ContactList-wrapper\">\n <\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n !hide_messaging!}}\n <\/div>\n \n <div id=\"toast-notifications-wrapper\"><\/div>\n !skip_messaging_modules!}}\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9272359","metadata":{"line:first":26},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"49","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1278","newLength":"1233","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS_https --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n+ \"build:webapp\": \"cd webapp && npm run build && cd ..\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 babel-node scripts\/build-assets\/critical-css.js --cwd .\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn && cd ..\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-angular\": \"^1.6.1\",\n \"eslint-plugin-freelancer\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-freelancer.git#v1.1.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"object-fit-images\": \"^3.1.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-object-fit-images\": \"^1.1.2\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n \"eslint-nibble\": \"~3.1.0\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"crypto-js\": \"npm:crypto-js@^3.1.9-1\",\n \"fl-autosize\": \"gitlab:angular\/autosize@3.0.21\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.12.2\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jquery-validation\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"slick-carousel\": \"github:kenwheeler\/slick@1.6.0\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"npm:jspm-nodelibs-path@^0.2.0\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-touch.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n- \"npm:@angular\/common@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/compiler@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/core@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/forms@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/http@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/platform-browser@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/router@3.2.4\": {\n- \"main\": \"index.js\"\n- },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jquery-validation\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n- \"npm:angular@1.6.2\": {\n+ \"npm:angular@1.6.3\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.1\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:svgo@0.7.2\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n },\n \"github:kenwheeler\/slick@1.6.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"slick\/slick.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n },\n \"slick\/*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9272358","metadata":{"line:first":18},"oldPath":".arclint","currentPath":".arclint","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"343","newLength":"344","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"exclude\": [\n \"(^public\/lib\/thrift\/packages\/)\",\n \"(^public\/static\/.*\/bower_components\/)\",\n \"(^public\/static\/css\/bootstrap\/)\",\n \"(^public\/static\/css\/critical-css\/)\",\n \"(^public\/static\/css\/js-plugins\/)\",\n \"(^public\/static\/@styles)\",\n \"(^support\/flarc\/.*\\\\.lint-test$)\"\n ],\n \"linters\": {\n \"chmod\": {\n \"type\": \"chmod\"\n },\n \"filename\": {\n \"type\": \"filename\",\n \"exclude\": [\n- \"(^public\/static\/modules\/)\"\n+ \"(^public\/static\/modules\/)\",\n+ \"(^webapp\/)\"\n ]\n },\n \"generated\": {\n \"type\": \"generated\"\n },\n \"javascript\": {\n \"type\": \"jshint\",\n \"include\": \"(\\\\.js$)\",\n \"exclude\": [\n \"(^public\/static\/angularjs\/)\",\n \"(^public\/static\/modules\/)\",\n \"(^public\/tests\/js\/app_tests\/)\",\n \"(^scripts\/build-assets\/.*\\\\.js$)\",\n \"(\\\\.min\\\\.js$)\"\n ],\n \"jshint.jshintignore\": \"support\/lint\/jshintignore\",\n \"jshint.jshintrc\": \"support\/lint\/default.jshintrc\"\n },\n \"javascript-angularjs\": {\n \"type\": \"jshint\",\n \"include\": [\n \"(^public\/static\/angularjs\/.*\\\\.js$)\"\n ],\n \"jshint.jshintrc\": \"support\/lint\/angularjs.jshintrc\"\n },\n \"javascript-modules\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^public\/static\/modules\/.*\\\\.js$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"public\/static\/modules\/.eslintrc\"\n },\n \"typescript-modules\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^public\/static\/modules\/.*\\\\.ts$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"public\/static\/modules\/.eslintrc_ts\"\n },\n \"javascript-node\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^scripts\/build-assets\/.*\\\\.js$)\"\n ],\n \"exclude\": [\n \"(^scripts\/build-assets\/legacy\/.*\\\\.js$)\",\n \"(^scripts\/build-assets\/Gruntfile.js$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"scripts\/build-assets\/.eslintrc\"\n },\n \"javascript-node-legacy\": {\n \"type\": \"jshint\",\n \"include\": [\n \"(^scripts\/build-assets\/legacy\/.*\\\\.js$)\",\n \"(^scripts\/build-assets\/Gruntfile.js$)\"\n ],\n \"jshint.jshintrc\": \"support\/lint\/node.jshintrc\"\n },\n \"json\": {\n \"type\": \"json\",\n \"include\": [\n \"(^\\\\.arcconfig$)\",\n \"(^\\\\.arclint$)\",\n \"(\\\\.babelrc$)\",\n \"(\\\\.book$)\",\n \"(\\\\.eslintrc$)\",\n \"(\\\\.jshintrc$)\",\n \"(\\\\.stylelintrc$)\",\n \"(\\\\.json$)\"\n ]\n },\n \"less\": {\n \"type\": \"lessc\",\n \"include\": \"(\\\\.less$)\",\n \"bin\": \"node_modules\/.bin\/lessc\",\n \"flags\": [\n \"--include-path=public\/static\/css\"\n ]\n },\n \"merge-conflict\": {\n \"type\": \"merge-conflict\"\n },\n \"nolint\": {\n \"type\": \"nolint\"\n },\n \"php\": {\n \"type\": \"xhpast\",\n \"include\": \"(\\\\.php$)\",\n \"exclude\": [\n \"(^src\/)\",\n \"(^test\/)\",\n \"(^support\/flarc\/.*\\\\.php$)\"\n ],\n \"severity\": {\n \"5\": \"warning\",\n \"9\": \"disabled\",\n \"19\": \"disabled\",\n \"57\": \"disabled\",\n \"78\": \"warning\"\n },\n \"xhpast.blacklisted.function\": {\n \"__halt_compiler\": \"The `__halt_compiler` function should not be used.\",\n \"class_alias\": \"The `class_alias` function should be avoided. It makes debugging more difficult.\",\n \"create_function\": \"The `create_function` function is essentially equivalent to `eval`. You should use anonymous functions instead.\",\n \"dl\": \"The `dl` function should not be used to load a PHP extension.\",\n \"eval\": \"The `eval` function should be avoided. It is potentially unsafe and makes debugging more difficult.\",\n \"get_magic_quotes_gpc\": \"This function always returns `false` in PHP version greater than or equal to 5.4.0.\",\n \"get_magic_quotes_runtime\": \"This function always returns `false` in PHP version greater than or equal to 5.4.0.\",\n \"phpcredits\": \"The `phpcredits` function should not be used.\",\n \"phpinfo\": \"The `phpinfo` function should not be used.\"\n },\n \"xhpast.deprecated.class\": {\n \"Encryption\": \"The `Encryption` class doesn't properly encrypt data.\",\n \"FasterLoginHandler\": \"Use the `InstantLoginHandler` class instead.\",\n \"FastLoginHandler\": \"Use the `InstantLoginHandler` class instead.\",\n \"FloatRegister\": true,\n \"FloatTimeRegister\": true,\n \"FreelancerToken\": true,\n \"HashUtil\": true,\n \"IntRegister\": true,\n \"IntTimeRegister\": true,\n \"NumberRegister\": true,\n \"NumberTimeRegister\": true,\n \"Register\": true,\n \"S3\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Aws\\\\S3Client` class instead.\"\n },\n \"xhpast.deprecated.functions\": {\n \"adapt_page\": \"\",\n \"append_uri_tracing_comment\": \"Use the `DB` class instead.\",\n \"array_columns\": \"\",\n \"array_columns_to_key_values\": \"\",\n \"array_flatten_kvstore\": \"\",\n \"array_for_enduser\": \"\",\n \"arrayGet\": \"Use `idx` instead.\",\n \"arrayIndexByKey\": \"\",\n \"arrayPath\": \"\",\n \"arrayPluck\": \"\",\n \"array_to_idarray\": \"\",\n \"array_values_to_keys\": \"\",\n \"check_allowed_domains\": \"\",\n \"check_email\": \"\",\n \"check_form_token\": \"\",\n \"check_id\": \"\",\n \"check_sortdir\": \"\",\n \"check_url\": \"\",\n \"closeNotificationDBConnection\": \"Use the `DB` class instead.\",\n \"compare_float\": \"\",\n \"connectToNotificationDB\": \"Use the `DB` class instead.\",\n \"connectToSlaveDB\": \"Use the `DB` class instead.\",\n \"createRegisterObject\": \"\",\n \"csrfprotectionhandler::logcsrfstatus\": \"Use CSRFProtectionHandler::isValidRequest() and handle the boolean result instead.\",\n \"DB::insertMaster\": \"Consider using the `DB::queryMaster` method instead.\",\n \"DB::updateMaster\": \"Consider using the `DB::queryMaster` method instead.\",\n \"decrypt_cookie\": \"\",\n \"dumpTrace\": \"\",\n \"encrypt_cookie\": \"\",\n \"error_log\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"exec_func\": \"\",\n \"execsql\": \"Use the `DB` class instead.\",\n \"generate_form_token\": \"\",\n \"get_affected_row\": \"Use the `DB` class instead.\",\n \"getCurrentDBConnection\": \"Use the `DB` class instead.\",\n \"getDebugPrintBacktrace\": \"Use the `DB` class instead.\",\n \"getHelpItem\": \"\",\n \"getHelpItemLink\": \"\",\n \"get_insert_id\": \"Use the `DB` class instead.\",\n \"get_limits\": \"\",\n \"get_limits_array\": \"\",\n \"get_page_link_str\": \"\",\n \"get_page_link_vars\": \"\",\n \"get_pages_link_str\": \"\",\n \"get_pages_link_vars\": \"\",\n \"getRegister\": \"\",\n \"get_register_value\": \"\",\n \"get_sql_result\": \"Use the `DB` class instead.\",\n \"helplink\": \"\",\n \"inc_register\": \"\",\n \"insert_on_master\": \"Use the `DB` class instead.\",\n \"insert\": \"Use the `DB` class instead.\",\n \"is_valid_goto_url\": \"\",\n \"localise_email\": \"Use the `MailHandler::getEmailReceiverData` method instead.\",\n \"logDbError\": \"Use the `DB` class instead.\",\n \"log_exception\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::warning` method instead.\",\n \"log_notice\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::notice` method instead.\",\n \"log_warning\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::warning` method instead.\",\n \"merge_any_arrays\": \"\",\n \"mysql_array_to_set\": \"Use the `DB` class instead.\",\n \"mysql_affected_rows\": \"Use the `DB` class instead.\",\n \"mysql_client_encoding\": \"Use the `DB` class instead.\",\n \"mysql_close\": \"Use the `DB` class instead.\",\n \"mysql_connect\": \"Use the `DB` class instead.\",\n \"mysql_create_db\": \"Use the `DB` class instead.\",\n \"mysql_data_seek\": \"Use the `DB` class instead.\",\n \"mysql_db_name\": \"Use the `DB` class instead.\",\n \"mysql_db_query\": \"Use the `DB` class instead.\",\n \"mysql_drop_db\": \"Use the `DB` class instead.\",\n \"mysql_errno\": \"Use the `DB` class instead.\",\n \"mysql_error\": \"Use the `DB` class instead.\",\n \"mysql_fetch_assoc\": \"Use the `DB` class instead.\",\n \"mysql_fetch_array\": \"Use the `DB` class instead.\",\n \"mysql_fetch_field\": \"Use the `DB` class instead.\",\n \"mysql_fetch_lengths\": \"Use the `DB` class instead.\",\n \"mysql_fetch_object\": \"Use the `DB` class instead.\",\n \"mysql_fetch_row\": \"Use the `DB` class instead.\",\n \"mysql_field_flags\": \"Use the `DB` class instead.\",\n \"mysql_field_len\": \"Use the `DB` class instead.\",\n \"mysql_field_name\": \"Use the `DB` class instead.\",\n \"mysql_field_seek\": \"Use the `DB` class instead.\",\n \"mysql_field_table\": \"Use the `DB` class instead.\",\n \"mysql_field_type\": \"Use the `DB` class instead.\",\n \"mysql_free_result\": \"Use the `DB` class instead.\",\n \"mysql_get_client_info\": \"Use the `DB` class instead.\",\n \"mysql_get_host_info\": \"Use the `DB` class instead.\",\n \"mysql_get_proto_info\": \"Use the `DB` class instead.\",\n \"mysql_get_server_info\": \"Use the `DB` class instead.\",\n \"mysql_info\": \"Use the `DB` class instead.\",\n \"mysql_insert_id\": \"Use the `DB` class instead.\",\n \"mysql_list_dbs\": \"Use the `DB` class instead.\",\n \"mysql_list_fields\": \"Use the `DB` class instead.\",\n \"mysql_list_processes\": \"Use the `DB` class instead.\",\n \"mysql_list_tables\": \"Use the `DB` class instead.\",\n \"mysql_num_fields\": \"Use the `DB` class instead.\",\n \"mysql_num_rows\": \"Use the `DB` class instead.\",\n \"mysql_pconnect\": \"Use the `DB` class instead.\",\n \"mysql_ping\": \"Use the `DB` class instead.\",\n \"mysql_query\": \"Use the `DB` class instead.\",\n \"mysql_real_escape_string\": \"Use the `DB` class instead.\",\n \"mysql_result\": \"Use the `DB` class instead.\",\n \"mysql_select_db\": \"Use the `DB` class instead.\",\n \"mysql_set_charset\": \"Use the `DB` class instead.\",\n \"mysql_stat\": \"Use the `DB` class instead.\",\n \"mysql_tablename\": \"Use the `DB` class instead.\",\n \"mysql_thread_id\": \"Use the `DB` class instead.\",\n \"mysql_unbuffered_query\": \"Use the `DB` class instead.\",\n \"prepare_amount\": \"\",\n \"prepare_check\": \"\",\n \"prepare_country\": \"\",\n \"prepare_currency\": \"\",\n \"prepare_double\": \"\",\n \"prepare_email\": \"\",\n \"prepare_fax\": \"\",\n \"prepare_filename\": \"\",\n \"prepare_int\": \"\",\n \"prepare_phone\": \"\",\n \"prepare_sql_datetime\": \"\",\n \"prepare_string\": \"\",\n \"prepare_time\": \"\",\n \"query_arrays_on_slave\": \"Use the `DB` class instead.\",\n \"query_arrays\": \"Use the `DB` class instead.\",\n \"query_arrays_without_unslash\": \"Use the `DB` class instead.\",\n \"query_count_on_slave\": \"Use the `DB` class instead.\",\n \"query_count\": \"Use the `DB` class instead.\",\n \"query_one_array_on_slave\": \"Use the `DB` class instead.\",\n \"query_one_array\": \"Use the `DB` class instead.\",\n \"query_only\": \"Use the `DB` class instead.\",\n \"redirect301\": \"\",\n \"restoreDBConnection\": \"Use the `DB` class instead.\",\n \"restoreMasterConnection\": \"Use the `DB` class instead.\",\n \"round_money\": \"\",\n \"select_arrays_on_slave\": \"Use the `DB` class instead.\",\n \"select_arrays\": \"Use the `DB` class instead.\",\n \"select_one_array\": \"Use the `DB` class instead.\",\n \"select_only\": \"Use the `DB` class instead.\",\n \"set_register\": \"\",\n \"trigger_error\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"update_on_master\": \"Use the `DB` class instead.\",\n \"update\": \"Use the `DB` class instead.\",\n \"urlsafe_64decode\": \"\",\n \"urlsafe_64encode\": \"\",\n \"user_error\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"usingSlave\": \"Use the `DB` class instead.\"\n },\n \"xhpast.php-version\": \"5.4.45\"\n },\n \"php-strict\": {\n \"type\": \"xhpast\",\n \"include\": [\n \"(^src\/.*\\\\.php$)\",\n \"(^test\/.*\\\\.php$)\"\n ],\n \"xhpast.php-version\": \"5.4.45\"\n },\n \"spelling\": {\n \"type\": \"spelling\"\n },\n \"stylelint\": {\n \"type\": \"stylelint\",\n \"include\": \"(^public\/static\/css\/flux\/(modules|layout)\/.*\\\\.less$)\",\n \"bin\": \"node_modules\/.bin\/stylelint\",\n \"stylelint.config\": \"public\/static\/css\/.stylelintrc\"\n },\n \"text\": {\n \"type\": \"text\",\n \"exclude\": [\n \"(^public\/.*\\\\.html?$)\",\n \"(\\\\.svg$)\",\n \"(^scripts\/build-assets\/build.js$)\"\n ],\n \"severity\": {\n \"4\": \"autofix\"\n },\n \"text.max-line-length\": 150\n },\n \"xml\": {\n \"type\": \"xml\",\n \"include\": [\n \"(\\\\.svg$)\",\n \"(\\\\.(xml|xsl)$)\"\n ]\n },\n \n \"phutil-library\": {\n \"type\": \"phutil-library\",\n \"include\": \"(^support\/flarc\/.*\\\\.php$)\"\n },\n \"phutil-php\": {\n \"type\": \"xhpast\",\n \"include\": \"(^support\/flarc\/.*\\\\.php$)\",\n \"standard\": \"phutil.xhpast\"\n }\n }\n }\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"9ee4cffbc5e280d4181edc0866b30ab684f74894":{"commit":"9ee4cffbc5e280d4181edc0866b30ab684f74894","tree":"9c6f81c4d8db23cca742e541a3253f9b97ed234d","parents":["16fb3fa324177cf142c87a50870f7c1b7fa0b1a4"],"time":"1488993439","author":"Laurent Goudet","summary":"add npm script to build webapp","message":"add npm script to build webapp","authorEmail":"laurent@freelancer.com"},"16fb3fa324177cf142c87a50870f7c1b7fa0b1a4":{"commit":"16fb3fa324177cf142c87a50870f7c1b7fa0b1a4","tree":"7fe8de5deb6bcd884db51b91d11842205f4564b5","parents":["0eb0f6302e8fc0bdb5fda27cebf355fb11cbeaa6"],"time":"1488993132","author":"Laurent Goudet","summary":"update yarn lockfile","message":"update yarn lockfile","authorEmail":"laurent@freelancer.com"},"0eb0f6302e8fc0bdb5fda27cebf355fb11cbeaa6":{"commit":"0eb0f6302e8fc0bdb5fda27cebf355fb11cbeaa6","tree":"74b5e96c640a7d806db1247584d3ece25ef17c46","parents":["7467434a00354b3588402d9208c1145bdfd8742d","edc467722dae0db815049e97a9cad894aa2d8614"],"time":"1488991623","author":"Laurent Goudet","summary":"Merge remote-tracking branch 'origin\/master' into laurent-webapp","message":"Merge remote-tracking branch 'origin\/master' into laurent-webapp","authorEmail":"laurent@freelancer.com"},"7467434a00354b3588402d9208c1145bdfd8742d":{"commit":"7467434a00354b3588402d9208c1145bdfd8742d","tree":"c5663d9a1e2a23833517d46410066f699611099b","parents":["1ddb857de346293e87ce856b45a3924b3092606f"],"time":"1488991469","author":"Laurent Goudet","summary":"update readme","message":"update readme","authorEmail":"laurent@freelancer.com"},"1ddb857de346293e87ce856b45a3924b3092606f":{"commit":"1ddb857de346293e87ce856b45a3924b3092606f","tree":"8c70af9eeee6a7457179f31372e236a460f78d84","parents":["2fffeeb3cf709d5015bc15808b2d3ca61b944d2e"],"time":"1488991262","author":"Laurent Goudet","summary":"more cleanup","message":"more cleanup","authorEmail":"laurent@freelancer.com"},"2fffeeb3cf709d5015bc15808b2d3ca61b944d2e":{"commit":"2fffeeb3cf709d5015bc15808b2d3ca61b944d2e","tree":"c6d40d09d21b19034620ce6aa3f12d5acb98c933","parents":["2a467dc6590b787ebbab072ea11be0d4ee62956b"],"time":"1488990967","author":"Laurent Goudet","summary":"cleanup","message":"cleanup","authorEmail":"laurent@freelancer.com"},"2a467dc6590b787ebbab072ea11be0d4ee62956b":{"commit":"2a467dc6590b787ebbab072ea11be0d4ee62956b","tree":"498a3e87259e5c1c160463f1077774900b220322","parents":["131f7a148dcfbcadbd3df6d177b7882b006f73f0"],"time":"1488990658","author":"Laurent Goudet","summary":"pluck pluck plucking","message":"pluck pluck plucking","authorEmail":"laurent@freelancer.com"},"131f7a148dcfbcadbd3df6d177b7882b006f73f0":{"commit":"131f7a148dcfbcadbd3df6d177b7882b006f73f0","tree":"4f17b76b5c288f0726738cb8dbe8b91c00286237","parents":["79b6461eb65a7d3a9dd7a5120496b34aed731aea"],"time":"1488990284","author":"Laurent Goudet","summary":"more improvements","message":"more improvements","authorEmail":"laurent@freelancer.com"},"79b6461eb65a7d3a9dd7a5120496b34aed731aea":{"commit":"79b6461eb65a7d3a9dd7a5120496b34aed731aea","tree":"35b936db1e49a3aa6e0486031a1d70bb98fc16fc","parents":["a3f34334da468fa18fce95cfdd6d07057d1c3e88"],"time":"1488986050","author":"Laurent Goudet","summary":"Update cli to rc1","message":"Update cli to rc1","authorEmail":"laurent@freelancer.com"},"a3f34334da468fa18fce95cfdd6d07057d1c3e88":{"commit":"a3f34334da468fa18fce95cfdd6d07057d1c3e88","tree":"41cd820055f91b119d9c8a797bdbd83791eca5f0","parents":["2b096f05e8550a621882e4da5e8d3b1a5f3ddae4"],"time":"1488985757","author":"Laurent Goudet","summary":"Finish renaming","message":"Finish renaming","authorEmail":"laurent@freelancer.com"},"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4":{"commit":"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4","tree":"579fb8566e194b3d80a6543b304c56ffc9263a7a","parents":["203a6aa47f50467ad46e556442f65d2c5aa574c6"],"time":"1488984749","author":"Laurent Goudet","summary":"more renaming","message":"more renaming","authorEmail":"laurent@freelancer.com"},"203a6aa47f50467ad46e556442f65d2c5aa574c6":{"commit":"203a6aa47f50467ad46e556442f65d2c5aa574c6","tree":"3bb4fc3a032bebb279f521ab7fb269f6aba8c600","parents":["99562cd0ca1d33a5132cb132bfb5a79f46c1a057"],"time":"1488978328","author":"Laurent Goudet","summary":"it works","message":"it works","authorEmail":"laurent@freelancer.com"},"99562cd0ca1d33a5132cb132bfb5a79f46c1a057":{"commit":"99562cd0ca1d33a5132cb132bfb5a79f46c1a057","tree":"a90b746681e137aa40e21d6aa2e82be7022cb3d9","parents":["8c26bbd83a354887739377f4beb4a3e82e3905e2"],"time":"1488903326","author":"Laurent Goudet","summary":"bugz","message":"bugz","authorEmail":"laurent@freelancer.com"},"8c26bbd83a354887739377f4beb4a3e82e3905e2":{"commit":"8c26bbd83a354887739377f4beb4a3e82e3905e2","tree":"32398a01d49efebce64b2f14d55cfdf0babc5dc5","parents":["fca85f7440b205d1b05d860cae596e72cae65150"],"time":"1488902573","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"fca85f7440b205d1b05d860cae596e72cae65150":{"commit":"fca85f7440b205d1b05d860cae596e72cae65150","tree":"0b44b65f63fe3bd3a590632ccb4681afd1de402c","parents":["4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c"],"time":"1488819407","author":"Laurent Goudet","summary":"Bugz fixing","message":"Bugz fixing","authorEmail":"laurent@freelancer.com"},"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c":{"commit":"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c","tree":"e86302ebe2ecb73a3e4893f93119efd6f1ea458c","parents":["c3815d83d0278276714c527df4b976ff2c29aa19"],"time":"1488818884","author":"Laurent Goudet","summary":"Dynamic queries handling","message":"Dynamic queries handling","authorEmail":"laurent@freelancer.com"},"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"700399":{"id":"700399","revisionID":"56417","dateCreated":"1488991818","dateModified":"1488991821","sourceControlBaseRevision":"edc467722dae0db815049e97a9cad894aa2d8614","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - update readme","unitStatus":"1","lintStatus":"3","changes":[{"id":"9272038","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5280","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5280","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n"}]},{"id":"9272037","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272036","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9272035","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9272034","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.key","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN RSA PRIVATE KEY-----\n+MIICWwIBAAKBgQCmipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LV\n+g\/kgt79am1bnF+\/HF880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R\n+1uHyD\/46sYtMejy3n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQAB\n+AoGATqG34hCSf11mWDUPNXjuCcz8eLF8Ugab\/pMngrPR2OWOSKue4y73jmITYBVd\n+96iOlqMAOxpmfFp\/R81PIHdi++Bax1NfSBT8tK0U7HHzkbHEXyvHiBSug78Y14h8\n+Y\/NMZXEvVapY7lapr5ZgOSf2rcKOlceMRsoohl6bGc+55BECQQDPZTw5WxDDe7\/W\n+oYzHy7abLw+A92cP8A6qlwXBik9ko6jtYXvoI454OIr6RsHoFPU9bUkx5G1fvOUZ\n+J3sxfxMZAkEAzZJEwcvmxHizX\/2NZZ8LvVyWGpao07bBcAEvDXDZFOZqKUujukOe\n+iilQD6JZDJTmW9RJmOgdQKeL9ZaTlX3MqwJASMJrbnPUXcB8fQAQM8f0OF06QzSI\n+o77EZnS1QEEVuWjxStZ4ceiHgwXTPBq2zIUNxI8irq5E8OGEPl7riWHbgQJARzqL\n+QGsaRrFb1cLRH4kAVFikWgoh7VnBpMGEQC\/9x9QerLhcvsl3QYAXEZO7LzTYrLDd\n+33Ft0V08jZfjA0VXiQJAOwX6glfDKf79AK1sifFQc\/v0Yu87LIOAwp0zLlsnO0Q9\n+xQV3TdjlNQebfTG+Uw1tmbcCb2wcGFfD199IHpAzIA==\n+-----END RSA PRIVATE KEY-----\n"}]},{"id":"9272033","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.crt","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN CERTIFICATE-----\n+MIICAzCCAWwCCQDlm49KXF45gzANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJB\n+VTETMBEGA1UECBMKU29tZS1TdGF0ZTEQMA4GA1UEChMHR3J1bnRKUzEQMA4GA1UE\n+AxMHMC4wLjAuMDAeFw0xNDAyMTkyMzE1NDRaFw0xNTAyMTkyMzE1NDRaMEYxCzAJ\n+BgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRAwDgYDVQQKEwdHcnVudEpT\n+MRAwDgYDVQQDEwcwLjAuMC4wMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm\n+ipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LVg\/kgt79am1bnF+\/H\n+F880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R1uHyD\/46sYtMejy3\n+n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQABMA0GCSqGSIb3DQEB\n+BQUAA4GBADnTBlN7+Aa8zj2zsUBSUv9w7iYut3ZDvrEY+IJt8EurwA6+Q7rQqVsY\n+an5ztiEESriWvqNIfvWb+Yekhv9sISJFMfApVbimmT6QseQcFEIlRNW5cfukHQVH\n+9dBI7upQO2vN7N9ABo4a3aBANMBxIvCnE+adiqNOTJF\/8qkiAFY9\n+-----END CERTIFICATE-----\n"}]},{"id":"9272032","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9272031","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9272030","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9272029","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9272028","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9272027","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272026","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9272025","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9272024","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-fwdnrlnzqzdcajcrc67u"},"oldPath":"webapp\/src\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272023","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const environment = {\n+ production: false,\n+ gafBaseUrl: 'https:\/\/laurent.syd1.fln-dev.net',\n+ authConfig: {\n+ baseUrl: `https:\/\/laurent.syd1.fln-dev.net\/auth`,\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/api`,\n+ ajaxBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/ajax`,\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n"}]},{"id":"9272022","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272021","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9272020","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9272019","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+import 'rxjs\/add\/observable\/merge';\n+import 'rxjs\/add\/observable\/from';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/merge';\n+import 'rxjs\/add\/operator\/mergeMap';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/pluck';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n+import 'rxjs\/add\/operator\/multicast';\n+import 'rxjs\/add\/operator\/scan';\n+import 'rxjs\/add\/operator\/take';\n"}]},{"id":"9272018","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.assign(`${environment.gafBaseUrl}${state.url}`);\n+ return false;\n+ }\n+}\n"}]},{"id":"9272017","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"55","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"55","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ template: `\n+ <div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+\n+ <!-- <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>-->\n+ <\/div>\n+ `,\n+})\n+export class ThreadComponent {\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.messages = this.datastore.list(\n+ 'messages',\n+ this.route.params.map(({threadId}) => threadId), {\n+ query: {\n+ limit: 10\n+ }\n+ }\n+ );\n+ }\n+\n+ sendMessage(message: string) {\n+ this.auth.switchMap(({uid}) =>\n+ this.messages.push({\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ busy: true,\n+ from_user: uid.toString()\n+ })\n+ ).toPromise();\n+ }\n+}\n"}]},{"id":"9272016","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9272015","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9272014","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread.thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9272013","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9272012","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+\n+ <fl-user-avatar [src]=\"thread.owner.avatar\"\n+ class=\"avatar\">\n+ <\/fl-user-avatar>\n+ <div class=\"body\">\n+ <div class=\"body-content-username\"\n+ *ngFor=\"let member of thread.members; let $last = last;\">\n+ {{ member.username }}<span *ngIf=\"!$last\">,<\/span>\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{ thread.message.message }}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9272011","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"33","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9272010","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9272009","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9272008","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9272007","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9272006","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9272005","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9272004","metadata":{"line:first":1,"copy:lines":{"47":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"48":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"49":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"50":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"50","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"50","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ThreadComponent,\n+ EmptyThreadComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n"}]},{"id":"9272003","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"70","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"70","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Thread } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <router-outlet><\/router-outlet>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ \/\/threadsUnreadCount: ObjectObservable<ThreadUnreadCount>;\n+ threadsLimit = new Subject<number>();\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ const uid = this.auth.map(({uid}) => uid.toString());\n+ this.threads = this.datastore.list('threads', uid, {\n+ query: {\n+ limit: this.threadsLimit\n+ .startWith(10)\n+ .scan((acc, curr) => acc + curr)\n+ }\n+ }\n+ );\n+ \/\/this.threadsUnreadCount = this.datastore.list('threadsUnreadCount', uid);\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.next(count);\n+ }\n+\n+ createThread() {\n+ \/\/this.threads.push(...);\n+ }\n+\n+}\n"}]},{"id":"9272002","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9272001","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",3,"-"],"7":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",6,"-"],"8":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",7,"-"],"9":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",8,"-"],"10":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",9,"-"],"24":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",16,"-"],"25":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",17,"-"],"26":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",18,"-"],"27":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",19,"-"],"28":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",20,"-"],"29":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",21,"-"],"30":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",25,"-"],"31":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",26,"-"],"32":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",27,"-"],"33":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",28,"-"],"34":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",29,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { RouterModule, Routes } from '@angular\/router';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { AuthGuard } from '..\/auth-guard.service';\n+\n+const messagingInboxRoutes: Routes = [\n+ {\n+ path: '',\n+ canActivate: [AuthGuard],\n+ component: MessagingInboxComponent,\n+ children: [\n+ {\n+ path: '',\n+ component: EmptyThreadComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: ThreadComponent\n+ }\n+ ]\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forChild(messagingInboxRoutes),\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class MessagingInboxRoutingModule { }\n"}]},{"id":"9272000","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message of messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9271999","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9271998","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9271997","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9271996","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message = new EventEmitter<string>();\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9271995","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9271994","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9271993","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9271992","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/empty-thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: `\n+ <div>\n+ NO THREAD SELECTED\n+ <\/div>\n+ `,\n+})\n+export class EmptyThreadComponent {\n+\n+}\n"}]},{"id":"9271991","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9271990","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9271989","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9271988","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9271987","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.uid) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9271986","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9271985","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9271984","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9271983","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"35","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"35","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n"}]},{"id":"9271982","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9271981","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/user-avatar.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular\/core';\n+@Component({\n+ selector: 'fl-user-avatar',\n+ template: `\n+ <img [src]=\"avatarUrl\" \/>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class UserAvatarComponent implements OnChanges {\n+ private avatarUrl: string;\n+ @Input() src: string;\n+\n+ constructor() {}\n+\n+ ngOnChanges() {\n+ if (this.src) {\n+ this.avatarUrl = `https:\/\/laurent.syd1.fln-dev.net${this.src}`;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9271980","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271979","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n+import { UserAvatarComponent } from '.\/user-avatar.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9271978","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9271977","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9271976","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9271975","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+\n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+\n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+\n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+\n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+\n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+\n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver;\n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9271974","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9271973","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9271972","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9271971","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9271970","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9271969","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9271968","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9271967","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9271966","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use\n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+\n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9271965","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/verification-banner\/verificationBanner.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface VerificationBanners {\n+ [userId: string]: VerificationBanner\n+}\n+\n+export interface VerificationBanner {\n+ email: string;\n+ params: string; \/\/ \"id=15540180&key=8656f81647a32f8331bea7921d0cef14dc9929e8\"\n+ showPhoneVerifyBanner: boolean;\n+ show_resend_btn: boolean;\n+ type_of_notif: string; \/\/ \"email\"\n+ username: string; \/\/ \"laurent\"\n+}\n"}]},{"id":"9271964","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9271963","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Thread, ThreadUnreadCount } from '.\/thread.model';\n+\n+export const threadReducer = (\n+ state: Readonly<{ [userId: string]: Entities<Thread> }> = {},\n+ action: Action\n+): Readonly<{ [userId: string]: Entities<Thread> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ console.log('threadReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ Denoramlize the Thread API response\n+ const contextDetails = data.context_details;\n+ const users = data.users;\n+ const threads = data.threads.reduce((acc: any, thread: any) => {\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.project = contextDetails.projects[context.id];\n+ } else {\n+ context.contest = contextDetails.contests[context.id];\n+ }\n+ context.id = undefined;\n+ const members = thread.thread.members.map((memberId: number) => {\n+ return { ...users[memberId], ...{\n+ \/\/ Avatar CDN URLs returned by the API are crap\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ });\n+ const owner = { ...users[thread.thread.owner], ...{\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ const threadInner = { ...thread.thread, context, members, owner };\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ acc[thread.id] = { ...thread , ...{ thread: threadInner }, messages };\n+ return acc;\n+ }, {});\n+\n+ return mergeEntities(state, threads, ref);\n+\n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n+export const threadUnreadCountReducer =\n+ (state: Entities<ThreadUnreadCount> = {}, action: Action): Entities<ThreadUnreadCount> => {\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ return mergeEntities(state, data.unread_thread_count, ref);\n+ return state;\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9271962","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface ThreadUnreadCount {\n+ unread_thread_count: number;\n+}\n+\n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ type: 'project' | 'contest';\n+ contest?: any;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD\n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9271961","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"73","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"73","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+import { RootModel } from '.\/root.model';\n+\n+import { Thread, ThreadUnreadCount } from '.\/thread\/thread.model';\n+import { threadReducer, threadUnreadCountReducer } from '.\/thread\/thread.reducer';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+\n+import { Observable } from 'rxjs\/Observable';\n+\n+export interface Reference {\n+ path: Path;\n+ query: Query;\n+}\n+\n+export type Path = [keyof RootModel, string];\n+\n+export interface Query {\n+ limit?: number;\n+ offset?: number;\n+}\n+\n+export interface Action {\n+ type: ActionType;\n+ payload?: {\n+ data: any;\n+ ref: Reference;\n+ }\n+}\n+\n+export type ActionType = 'API_FETCH_SUCCESS'\n+ | 'API_POST'\n+ | 'API_POST_SUCCESS';\n+\n+export interface Entities<T> {\n+ entities?: {\n+ [id: string]: T;\n+ };\n+ lists?: {\n+ [query: string]: T[];\n+ };\n+};\n+\n+export const mergeEntities = (state: any, entities: any, ref: Reference) => {\n+ const data = state[ref.path[1]] || {};\n+ const query = 'default';\n+ return { ...state, ...{\n+ [ref.path[1]]: {\n+ entities: {\n+ ...data.entities,\n+ ...entities\n+ },\n+ lists: {\n+ ...data.lists,\n+ ...{\n+ [query]: Object.keys(entities).reduce((acc, id, index) => {\n+ acc[(ref.query.offset || 0) + index] = id;\n+ return acc;\n+ }, data.lists ? ([...data.lists[query]] || []) : [])\n+ }\n+ }\n+ }\n+ }};\n+};\n+\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ threadsUnreadCount: threadUnreadCountReducer,\n+ messages: messageReducer,\n+});\n"}]},{"id":"9271960","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/root.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface RootModel {\n+ threads: {\n+ [userId: string]: Thread;\n+ },\n+ threadsUnreadCount: {\n+ [userId: string]: ThreadUnreadCount\n+ },\n+ messages: {\n+ [threadId: string]: Message;\n+ }\n+};\n"}]},{"id":"9271959","metadata":[],"oldPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","currentPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271958","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Message } from '.\/message.model';\n+\n+export const messageReducer = (\n+ state: Readonly<{ [threadId: string]: Entities<Message> }> = {},\n+ action: Action\n+): Readonly<{ [threadId: string]: Entities<Message> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'messages') {\n+ console.log('messageReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS': {\n+ const { data, ref } = action.payload;\n+ const messages = data.messages.reduce((acc: any, message: any) => {\n+ acc[message.id] = message;\n+ return acc;\n+ }, {});\n+ return mergeEntities(state, messages, ref);\n+ }\n+\n+ case 'API_POST': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ case 'API_POST_SUCCESS': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ \/*case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9271957","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n"}]},{"id":"9271956","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9271955","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"45","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"45","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Reference, Action } from '.\/store';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+import { backend } from '.\/backend';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private ref$: any,\n+ private apiHttp: ApiHttp,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.ref$, this.apiHttp, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ push(body: Object): Observable<boolean> {\n+ console.log('push', body);\n+ return this.ref$.take(1)\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ return Observable.of((<any>backend)[path[0]].post(path[1]))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST',\n+ payload: { data, ref }\n+ }))\n+ .switchMap((config) => this.apiHttp.post(config, body))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST_SUCCESS',\n+ payload: { data, ref }\n+ }))\n+ })\n+ .mapTo(true)\n+ }\n+\n+}\n"}]},{"id":"9271954","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/languages-domains\/languages-domains.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface LanguagesDomains {\n+\n+\n+}\n+\n+{\"status\":\"success\",\"data\":{\"languages\":[{\"id\":\"4\",\"code\":\"af\",\"name\":\"Afrikaans\",\"englishName\":\"Afrikaans\",\"iso6391\":\"af\",\"iso6392\":\"afr\",\"active\":true},{\"id\":\"19\",\"code\":\"bn\",\"name\":\"\\u09ac\\u09be\\u0982\\u09b2\\u09be\",\"englishName\":\"Bengali\",\"iso6391\":\"bn\",\"iso6392\":\"ben\",\"active\":true},{\"id\":\"23\",\"code\":\"ca\",\"name\":\"Catal\\u00e0\",\"englishName\":\"Catalan\",\"iso6391\":\"ca\",\"iso6392\":\"cat\",\"active\":true},{\"id\":\"28\",\"code\":\"cs\",\"name\":\"\\u010ce\\u0161tina\",\"englishName\":\"Czech\",\"iso6391\":\"cs\",\"iso6392\":\"ces\",\"active\":true},{\"id\":\"32\",\"code\":\"da\",\"name\":\"Dansk\",\"englishName\":\"Danish\",\"iso6391\":\"da\",\"iso6392\":\"dan\",\"active\":true},{\"id\":\"33\",\"code\":\"de\",\"name\":\"Deutsch\",\"englishName\":\"German\",\"iso6391\":\"de\",\"iso6392\":\"deu\",\"active\":true},{\"id\":\"37\",\"code\":\"el\",\"name\":\"\\u03b5\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac\",\"englishName\":\"Greek, Modern\",\"iso6391\":\"el\",\"iso6392\":\"ell\",\"active\":true},{\"id\":\"38\",\"code\":\"en\",\"name\":\"English\",\"englishName\":\"English\",\"iso6391\":\"en\",\"iso6392\":\"eng\",\"active\":true},{\"id\":\"40\",\"code\":\"es\",\"name\":\"Espa\\u00f1ol\",\"englishName\":\"Spanish\",\"iso6391\":\"es\",\"iso6392\":\"spa\",\"active\":true},{\"id\":\"45\",\"code\":\"fi\",\"name\":\"Suomi\",\"englishName\":\"Finnish\",\"iso6391\":\"fi\",\"iso6392\":\"fin\",\"active\":true},{\"id\":\"46\",\"code\":\"fil\",\"name\":\"Filipino\",\"englishName\":\"Filipino\",\"iso6391\":\"\",\"iso6392\":\"fil\",\"active\":true},{\"id\":\"49\",\"code\":\"fr\",\"name\":\"Fran\\u00e7ais\",\"englishName\":\"French\",\"iso6391\":\"fr\",\"iso6392\":\"fra\",\"active\":true},{\"id\":\"60\",\"code\":\"hi\",\"name\":\"\\u0939\\u093f\\u0928\\u094d\\u0926\\u0940\",\"englishName\":\"Hindi\",\"iso6391\":\"hi\",\"iso6392\":\"hin\",\"active\":true},{\"id\":\"64\",\"code\":\"hu\",\"name\":\"Magyar\",\"englishName\":\"Hungarian\",\"iso6391\":\"hu\",\"iso6392\":\"hun\",\"active\":true},{\"id\":\"68\",\"code\":\"id\",\"name\":\"Bahasa Indonesia\",\"englishName\":\"Indonesian\",\"iso6391\":\"id\",\"iso6392\":\"ind\",\"active\":true},{\"id\":\"75\",\"code\":\"it\",\"name\":\"Italiano\",\"englishName\":\"Italian\",\"iso6391\":\"it\",\"iso6392\":\"ita\",\"active\":true},{\"id\":\"77\",\"code\":\"ja\",\"name\":\"\\u65e5\\u672c\\u8a9e\",\"englishName\":\"Japanese\",\"iso6391\":\"ja\",\"iso6392\":\"jpn\",\"active\":true},{\"id\":\"87\",\"code\":\"ko\",\"name\":\"\\ud55c\\uad6d\\uc5b4\",\"englishName\":\"Korean\",\"iso6391\":\"ko\",\"iso6392\":\"kor\",\"active\":true},{\"id\":\"109\",\"code\":\"ms\",\"name\":\"Bahasa Malaysia\",\"englishName\":\"Malay\",\"iso6391\":\"ms\",\"iso6392\":\"msa\",\"active\":true},{\"id\":\"113\",\"code\":\"nb\",\"name\":\"Norsk-Bokm\\u00e5l\",\"englishName\":\"Norwegian Bokm\\u00e5l\",\"iso6391\":\"nb\",\"iso6392\":\"nob\",\"active\":true},{\"id\":\"118\",\"code\":\"nl\",\"name\":\"Nederlands\",\"englishName\":\"Dutch\",\"iso6391\":\"nl\",\"iso6392\":\"nld\",\"active\":true},{\"id\":\"132\",\"code\":\"pl\",\"name\":\"Polski\",\"englishName\":\"Polish\",\"iso6391\":\"pl\",\"iso6392\":\"pol\",\"active\":true},{\"id\":\"134\",\"code\":\"pt\",\"name\":\"Portugu\\u00eas\",\"englishName\":\"Portuguese\",\"iso6391\":\"pt\",\"iso6392\":\"por\",\"active\":true},{\"id\":\"138\",\"code\":\"ro\",\"name\":\"Rom\\u00e2n\\u0103\",\"englishName\":\"Romanian\",\"iso6391\":\"ro\",\"iso6392\":\"ron\",\"active\":true},{\"id\":\"139\",\"code\":\"ru\",\"name\":\"\\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439\",\"englishName\":\"Russian\",\"iso6391\":\"ru\",\"iso6392\":\"rus\",\"active\":true},{\"id\":\"148\",\"code\":\"sl\",\"name\":\"Sloven\\u0161\\u010dina\",\"englishName\":\"Slovenian\",\"iso6391\":\"sl\",\"iso6392\":\"slv\",\"active\":true},{\"id\":\"152\",\"code\":\"sq\",\"name\":\"Shqip\",\"englishName\":\"Albanian\",\"iso6391\":\"sq\",\"iso6392\":\"sqi\",\"active\":true},{\"id\":\"157\",\"code\":\"sv\",\"name\":\"Svenska\",\"englishName\":\"Swedish\",\"iso6391\":\"sv\",\"iso6392\":\"swe\",\"active\":true},{\"id\":\"158\",\"code\":\"sw\",\"name\":\"Kiswahili\",\"englishName\":\"Swahili\",\"iso6391\":\"sw\",\"iso6392\":\"swa\",\"active\":true},{\"id\":\"163\",\"code\":\"th\",\"name\":\"\\u0e20\\u0e32\\u0e29\\u0e32\\u0e44\\u0e17\\u0e22\",\"englishName\":\"Thai\",\"iso6391\":\"th\",\"iso6392\":\"tha\",\"active\":true},{\"id\":\"171\",\"code\":\"tr\",\"name\":\"T\\u00fcrk\\u00e7e\",\"englishName\":\"Turkish\",\"iso6391\":\"tr\",\"iso6392\":\"tur\",\"active\":true},{\"id\":\"178\",\"code\":\"uk\",\"name\":\"\\u0423\\u043a\\u0440\\u0430\\u0457\\u043d\\u0441\\u044c\\u043a\\u0430\",\"englishName\":\"Ukrainian\",\"iso6391\":\"uk\",\"iso6392\":\"ukr\",\"active\":true},{\"id\":\"182\",\"code\":\"vi\",\"name\":\"Ti\\u1ebfng Vi\\u1ec7t\",\"englishName\":\"Vietnamese\",\"iso6391\":\"vi\",\"iso6392\":\"vie\",\"active\":true},{\"id\":\"190\",\"code\":\"zh\",\"name\":\"\\u4e2d\\u6587(\\u7b80\\u4f53)\",\"englishName\":\"Chinese\",\"iso6391\":\"zh\",\"iso6392\":\"zho\",\"active\":true}],\"domains\":[{\"name\":\"North America\",\"domains\":[{\"id\":\"1\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\",\"pattern\":\"\\\/freelancer.com$\\\/\",\"name\":\"US (International)\",\"info\":\"Go to global site\",\"info_selected\":\"Stay in US\",\"flag_small\":\"us.png\",\"flag_big\":\"us-big.png\",\"sequence\":\"200\",\"short_name\":\"usa\",\"domain_switcher_region_name\":\"North America\",\"current\":true},{\"id\":\"9\",\"domain_name\":\"freelancer.ca\",\"url\":\"https:\\\/\\\/www.freelancer.ca\",\"pattern\":\"\\\/freelancer.ca$\\\/\",\"name\":\"Canada\",\"info\":\"Go to CA site\",\"info_selected\":\"Stay in CA\",\"flag_small\":\"ca.png\",\"flag_big\":\"ca-big.png\",\"sequence\":\"210\",\"short_name\":\"canada\",\"domain_switcher_region_name\":\"North America\"},{\"id\":\"13\",\"domain_name\":\"freelancer.com.jm\",\"url\":\"https:\\\/\\\/www.freelancer.com.jm\",\"pattern\":\"\\\/freelancer.com.jm$\\\/\",\"name\":\"Jamaica\",\"info\":\"Go to JM site\",\"info_selected\":\"Stay in JM\",\"flag_small\":\"jm.png\",\"flag_big\":\"jm-big.png\",\"sequence\":\"220\",\"short_name\":\"jamaica\",\"domain_switcher_region_name\":\"North America\"}]},{\"name\":\"Africa\",\"domains\":[{\"id\":\"11\",\"domain_name\":\"freelancer.co.za\",\"url\":\"https:\\\/\\\/www.freelancer.co.za\",\"pattern\":\"\\\/freelancer.co.za$\\\/\",\"name\":\"South Africa\",\"info\":\"Go to ZA site\",\"info_selected\":\"Stay in ZA\",\"flag_small\":\"za.png\",\"flag_big\":\"za-big.png\",\"sequence\":\"500\",\"short_name\":\"south-africa\",\"domain_switcher_region_name\":\"Africa\"},{\"id\":\"55\",\"domain_name\":\"freelancer.co.ke\",\"url\":\"https:\\\/\\\/www.freelancer.co.ke\",\"pattern\":\"\\\/freelancer.co.ke$\\\/\",\"name\":\"Kenya\",\"info\":\"Go to KE site\",\"info_selected\":\"Stay in KE\",\"flag_small\":\"ke.png\",\"flag_big\":\"ke-big.png\",\"sequence\":\"510\",\"short_name\":\"kenya\",\"domain_switcher_region_name\":\"Africa\"}]},{\"name\":\"Europe\",\"domains\":[{\"id\":\"4\",\"domain_name\":\"freelancer.co.uk\",\"url\":\"https:\\\/\\\/www.freelancer.co.uk\",\"pattern\":\"\\\/freelancer.co.uk$\\\/\",\"name\":\"United Kingdom\",\"info\":\"Go to UK site\",\"info_selected\":\"Stay in UK\",\"flag_small\":\"uk.png\",\"flag_big\":\"uk-big.png\",\"sequence\":\"600\",\"short_name\":\"uk\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"10\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/eu\\\/welcome.php\",\"pattern\":\"\\\/freelancer.eu$\\\/\",\"name\":\"European Union\",\"info\":\"Go to EU site\",\"info_selected\":\"Stay in EU\",\"flag_small\":\"eu.png\",\"flag_big\":\"eu-big.png\",\"sequence\":\"610\",\"short_name\":\"europe-union\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"22\",\"domain_name\":\"fr.freelancer.com\",\"url\":\"https:\\\/\\\/www.fr.freelancer.com\",\"pattern\":\"\\\/fr.freelancer.com$\\\/\",\"name\":\"France\",\"info\":\"Go to FR site\",\"info_selected\":\"Stay in FR\",\"flag_small\":\"fr.png\",\"flag_big\":\"fr-big.png\",\"sequence\":\"620\",\"short_name\":\"france\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"8\",\"domain_name\":\"freelancer.de\",\"url\":\"https:\\\/\\\/www.freelancer.de\",\"pattern\":\"\\\/freelancer.de$\\\/\",\"name\":\"Germany\",\"info\":\"Go to DE site\",\"info_selected\":\"Stay in DE\",\"flag_small\":\"de.png\",\"flag_big\":\"de-big.png\",\"sequence\":\"630\",\"short_name\":\"germany\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"42\",\"domain_name\":\"freelancer.gr\",\"url\":\"https:\\\/\\\/www.freelancer.gr\",\"pattern\":\"\\\/freelancer.gr$\\\/\",\"name\":\"Greece\",\"info\":\"Go to GR site\",\"info_selected\":\"Stay in GR\",\"flag_small\":\"gr.png\",\"flag_big\":\"gr-big.png\",\"sequence\":\"640\",\"short_name\":\"greece\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"35\",\"domain_name\":\"freelancer.pt\",\"url\":\"https:\\\/\\\/www.freelancer.pt\",\"pattern\":\"\\\/freelancer.pt$\\\/\",\"name\":\"Portugal\",\"info\":\"Go to PT site\",\"info_selected\":\"Stay in PT\",\"flag_small\":\"pt.png\",\"flag_big\":\"pt-big.png\",\"sequence\":\"650\",\"short_name\":\"portugal\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"14\",\"domain_name\":\"freelancer.es\",\"url\":\"https:\\\/\\\/www.freelancer.es\",\"pattern\":\"\\\/freelancer.es$\\\/\",\"name\":\"Spain\",\"info\":\"Go to ES site\",\"info_selected\":\"Stay in ES\",\"flag_small\":\"es.png\",\"flag_big\":\"es-big.png\",\"sequence\":\"660\",\"short_name\":\"spain\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"45\",\"domain_name\":\"freelancer.cz\",\"url\":\"https:\\\/\\\/www.freelancer.cz\",\"pattern\":\"\\\/freelancer.cz$\\\/\",\"name\":\"Czech Republic\",\"info\":\"Go to CZ site\",\"info_selected\":\"Stay in CZ\",\"flag_small\":\"cz.png\",\"flag_big\":\"cz-big.png\",\"sequence\":\"665\",\"short_name\":\"czech-republic\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"33\",\"domain_name\":\"freelancer.se\",\"url\":\"https:\\\/\\\/www.freelancer.se\",\"pattern\":\"\\\/freelancer.se$\\\/\",\"name\":\"Sweden\",\"info\":\"Go to SV site\",\"info_selected\":\"Stay in SV\",\"flag_small\":\"sv.png\",\"flag_big\":\"sv-big.png\",\"sequence\":\"670\",\"short_name\":\"sweden\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"43\",\"domain_name\":\"freelancer.is\",\"url\":\"https:\\\/\\\/www.freelancer.is\",\"pattern\":\"\\\/freelancer.is$\\\/\",\"name\":\"Iceland\",\"info\":\"Go to IS site\",\"info_selected\":\"Stay in IS\",\"flag_small\":\"is.png\",\"flag_big\":\"is-big.png\",\"sequence\":\"680\",\"short_name\":\"iceland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"50\",\"domain_name\":\"freelancer.ie\",\"url\":\"https:\\\/\\\/www.freelancer.ie\",\"pattern\":\"\\\/freelancer.ie$\\\/\",\"name\":\"Ireland\",\"info\":\"Go to IE site\",\"info_selected\":\"Stay in IE\",\"flag_small\":\"ie.png\",\"flag_big\":\"ie-big.png\",\"sequence\":\"685\",\"short_name\":\"ireland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"26\",\"domain_name\":\"freelancer.co.it\",\"url\":\"https:\\\/\\\/www.freelancer.co.it\",\"pattern\":\"\\\/freelancer.co.it$\\\/\",\"name\":\"Italy\",\"info\":\"Go to IT site\",\"info_selected\":\"Stay in IT\",\"flag_small\":\"it.png\",\"flag_big\":\"it-big.png\",\"sequence\":\"690\",\"short_name\":\"italy\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"27\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/changeLanguage.php?lang=nl\",\"pattern\":\"\\\/freelancer.co.nl$\\\/\",\"name\":\"Netherlands\",\"info\":\"Go to NL site\",\"info_selected\":\"Stay in NL\",\"flag_small\":\"nl.png\",\"flag_big\":\"nl-big.png\",\"sequence\":\"700\",\"short_name\":\"netherlands\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"28\",\"domain_name\":\"tr.freelancer.com\",\"url\":\"https:\\\/\\\/www.tr.freelancer.com\",\"pattern\":\"\\\/tr.freelancer.com$\\\/\",\"name\":\"Turkey\",\"info\":\"Go to TR site\",\"info_selected\":\"Stay in TR\",\"flag_small\":\"tr.png\",\"flag_big\":\"tr-big.png\",\"sequence\":\"710\",\"short_name\":\"turkey\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"36\",\"domain_name\":\"freelancer.pl\",\"url\":\"https:\\\/\\\/www.freelancer.pl\",\"pattern\":\"\\\/freelancer.pl$\\\/\",\"name\":\"Poland\",\"info\":\"Go to PL site\",\"info_selected\":\"Stay in PL\",\"flag_small\":\"pl.png\",\"flag_big\":\"pl-big.png\",\"sequence\":\"720\",\"short_name\":\"poland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"39\",\"domain_name\":\"freelancer.co.ro\",\"url\":\"https:\\\/\\\/www.freelancer.co.ro\",\"pattern\":\"\\\/freelancer.co.ro$\\\/\",\"name\":\"Romania\",\"info\":\"Go to RO site\",\"info_selected\":\"Stay in RO\",\"flag_small\":\"ro.png\",\"flag_big\":\"ro-big.png\",\"sequence\":\"730\",\"short_name\":\"romania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"40\",\"domain_name\":\"freelancer.com.ru\",\"url\":\"https:\\\/\\\/www.freelancer.com.ru\",\"pattern\":\"\\\/freelancer.com.ru$\\\/\",\"name\":\"Russia\",\"info\":\"Go to RU site\",\"info_selected\":\"Stay in RU\",\"flag_small\":\"ru.png\",\"flag_big\":\"ru-big.png\",\"sequence\":\"740\",\"short_name\":\"russia\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"47\",\"domain_name\":\"freelancer.com.ua\",\"url\":\"https:\\\/\\\/www.freelancer.com.ua\",\"pattern\":\"\\\/freelancer.com.ua$\\\/\",\"name\":\"Ukraine\",\"info\":\"Go to UA site\",\"info_selected\":\"Stay in UA\",\"flag_small\":\"ua.png\",\"flag_big\":\"ua-big.png\",\"sequence\":\"1090\",\"short_name\":\"ukraine\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"48\",\"domain_name\":\"freelancer.no\",\"url\":\"https:\\\/\\\/www.freelancer.no\",\"pattern\":\"\\\/freelancer.no$\\\/\",\"name\":\"Norway\",\"info\":\"Go to NO site\",\"info_selected\":\"Stay in NO\",\"flag_small\":\"no.png\",\"flag_big\":\"no-big.png\",\"sequence\":\"1100\",\"short_name\":\"norway\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"57\",\"domain_name\":\"freelancer.hu\",\"url\":\"https:\\\/\\\/www.freelancer.hu\",\"pattern\":\"\\\/freelancer.hu$\\\/\",\"name\":\"Hungary\",\"info\":\"Go to HU site\",\"info_selected\":\"Stay in HU\",\"flag_small\":\"hu.png\",\"flag_big\":\"hu-big.png\",\"sequence\":\"1110\",\"short_name\":\"hungary\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"52\",\"domain_name\":\"fi.freelancer.com\",\"url\":\"https:\\\/\\\/www.fi.freelancer.com\",\"pattern\":\"\\\/fi.freelancer.com$\\\/\",\"name\":\"Finland\",\"info\":\"Go to FI site\",\"info_selected\":\"Stay in FI\",\"flag_small\":\"fi.png\",\"flag_big\":\"fi-big.png\",\"sequence\":\"1120\",\"short_name\":\"finland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"53\",\"domain_name\":\"dk.freelancer.com\",\"url\":\"https:\\\/\\\/www.dk.freelancer.com\",\"pattern\":\"\\\/dk.freelancer.com$\\\/\",\"name\":\"Denmark\",\"info\":\"Go to DK site\",\"info_selected\":\"Stay in DK\",\"flag_small\":\"dk.png\",\"flag_big\":\"dk-big.png\",\"sequence\":\"1130\",\"short_name\":\"denmark\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"56\",\"domain_name\":\"freelancer.com.al\",\"url\":\"https:\\\/\\\/www.freelancer.com.al\",\"pattern\":\"\\\/freelancer.com.al$\\\/\",\"name\":\"Albania\",\"info\":\"Go to AL site\",\"info_selected\":\"Stay in AL\",\"flag_small\":\"al.png\",\"flag_big\":\"al-big.png\",\"sequence\":\"1140\",\"short_name\":\"albania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"51\",\"domain_name\":\"freelancer.si\",\"url\":\"https:\\\/\\\/www.freelancer.si\",\"pattern\":\"\\\/freelancer.si$\\\/\",\"name\":\"Slovenia\",\"info\":\"Go to SI site\",\"info_selected\":\"Stay in SI\",\"flag_small\":\"si.png\",\"flag_big\":\"si-big.png\",\"sequence\":\"1150\",\"short_name\":\"slovenia\",\"domain_switcher_region_name\":\"Europe\"}]},{\"name\":\"Asia Pacific\",\"domains\":[{\"id\":\"3\",\"domain_name\":\"freelancer.com.au\",\"url\":\"https:\\\/\\\/www.freelancer.com.au\",\"pattern\":\"\\\/freelancer.com.au$\\\/\",\"name\":\"Australia\",\"info\":\"Go to Australia site\",\"info_selected\":\"Stay in Australia\",\"flag_small\":\"au.png\",\"flag_big\":\"au-big.png\",\"sequence\":\"800\",\"short_name\":\"australia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"2\",\"domain_name\":\"freelancer.co.nz\",\"url\":\"https:\\\/\\\/www.freelancer.co.nz\",\"pattern\":\"\\\/freelancer.co.nz$\\\/\",\"name\":\"New Zealand\",\"info\":\"Go to New Zealand site\",\"info_selected\":\"Stay in New Zealand\",\"flag_small\":\"nz.png\",\"flag_big\":\"nz-big.png\",\"sequence\":\"810\",\"short_name\":\"new-zealand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"5\",\"domain_name\":\"freelancer.hk\",\"url\":\"https:\\\/\\\/www.freelancer.hk\",\"pattern\":\"\\\/freelancer.hk$\\\/\",\"name\":\"Hong Kong\",\"info\":\"Go to HK site\",\"info_selected\":\"Stay in HK\",\"flag_small\":\"hk.png\",\"flag_big\":\"hk-big.png\",\"sequence\":\"820\",\"short_name\":\"hong-kong\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"29\",\"domain_name\":\"freelancer.com.bd\",\"url\":\"https:\\\/\\\/www.freelancer.com.bd\",\"pattern\":\"\\\/freelancer.com.bd$\\\/\",\"name\":\"Bangladesh\",\"info\":\"Go to BD site\",\"info_selected\":\"Stay in BD\",\"flag_small\":\"bd.png\",\"flag_big\":\"bd-big.png\",\"sequence\":\"830\",\"short_name\":\"bangladesh\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"12\",\"domain_name\":\"freelancer.in\",\"url\":\"https:\\\/\\\/www.freelancer.in\",\"pattern\":\"\\\/freelancer.in$\\\/\",\"name\":\"India\",\"info\":\"Go to IN site\",\"info_selected\":\"Stay in IN\",\"flag_small\":\"in.png\",\"flag_big\":\"in-big.png\",\"sequence\":\"840\",\"short_name\":\"india\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"24\",\"domain_name\":\"freelancer.co.id\",\"url\":\"https:\\\/\\\/www.freelancer.co.id\",\"pattern\":\"\\\/freelancer.co.id$\\\/\",\"name\":\"Indonesia\",\"info\":\"Go to ID site\",\"info_selected\":\"Stay in ID\",\"flag_small\":\"id.png\",\"flag_big\":\"id-big.png\",\"sequence\":\"850\",\"short_name\":\"indo\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"41\",\"domain_name\":\"freelancer.jp\",\"url\":\"https:\\\/\\\/www.freelancer.jp\",\"pattern\":\"\\\/freelancer.jp$\\\/\",\"name\":\"Japan\",\"info\":\"Go to JP site\",\"info_selected\":\"Stay in JP\",\"flag_small\":\"jp.png\",\"flag_big\":\"jp-big.png\",\"sequence\":\"860\",\"short_name\":\"japan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"49\",\"domain_name\":\"freelancer.co.kr\",\"url\":\"https:\\\/\\\/www.freelancer.co.kr\",\"pattern\":\"\\\/freelancer.co.kr$\\\/\",\"name\":\"Korea, Republic of\",\"info\":\"Go to KR site\",\"info_selected\":\"Stay in KR\",\"flag_small\":\"kr.png\",\"flag_big\":\"kr-big.png\",\"sequence\":\"865\",\"short_name\":\"korea-republic-of\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"30\",\"domain_name\":\"my.freelancer.com\",\"url\":\"https:\\\/\\\/www.my.freelancer.com\",\"pattern\":\"\\\/my.freelancer.com$\\\/\",\"name\":\"Malaysia\",\"info\":\"Go to MS site\",\"info_selected\":\"Stay in MS\",\"flag_small\":\"ms.png\",\"flag_big\":\"ms-big.png\",\"sequence\":\"870\",\"short_name\":\"malaysia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"20\",\"domain_name\":\"freelancer.pk\",\"url\":\"https:\\\/\\\/www.freelancer.pk\",\"pattern\":\"\\\/freelancer.pk$\\\/\",\"name\":\"Pakistan\",\"info\":\"Go to PK site\",\"info_selected\":\"Stay in PK\",\"flag_small\":\"pk.png\",\"flag_big\":\"pk-big.png\",\"sequence\":\"880\",\"short_name\":\"pakistan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"7\",\"domain_name\":\"freelancer.ph\",\"url\":\"https:\\\/\\\/www.freelancer.ph\",\"pattern\":\"\\\/freelancer.ph$\\\/\",\"name\":\"Philippines\",\"info\":\"Go to PH site\",\"info_selected\":\"Stay in PH\",\"flag_small\":\"ph.png\",\"flag_big\":\"ph-big.png\",\"sequence\":\"890\",\"short_name\":\"philippines\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"38\",\"domain_name\":\"freelancer.cn\",\"url\":\"https:\\\/\\\/www.freelancer.cn\",\"pattern\":\"\\\/freelancer.cn$\\\/\",\"name\":\"P.R. China\",\"info\":\"Go to ZH site\",\"info_selected\":\"Stay in ZH\",\"flag_small\":\"zh.png\",\"flag_big\":\"zh-big.png\",\"sequence\":\"900\",\"short_name\":\"china\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"6\",\"domain_name\":\"freelancer.sg\",\"url\":\"https:\\\/\\\/www.freelancer.sg\",\"pattern\":\"\\\/freelancer.sg$\\\/\",\"name\":\"Singapore\",\"info\":\"Go to SG site\",\"info_selected\":\"Stay in SG\",\"flag_small\":\"sg.png\",\"flag_big\":\"sg-big.png\",\"sequence\":\"910\",\"short_name\":\"singapore\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"44\",\"domain_name\":\"freelancer.co.th\",\"url\":\"https:\\\/\\\/www.freelancer.co.th\",\"pattern\":\"\\\/freelancer.co.th$\\\/\",\"name\":\"Thailand\",\"info\":\"Go to TH site\",\"info_selected\":\"Stay in TH\",\"flag_small\":\"th.png\",\"flag_big\":\"th-big.png\",\"sequence\":\"940\",\"short_name\":\"thailand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"54\",\"domain_name\":\"vn.freelancer.com\",\"url\":\"https:\\\/\\\/www.vn.freelancer.com\",\"pattern\":\"\\\/vn.freelancer.com$\\\/\",\"name\":\"Vietnam\",\"info\":\"Go to VN site\",\"info_selected\":\"Stay in VN\",\"flag_small\":\"vn.png\",\"flag_big\":\"vn-big.png\",\"sequence\":\"950\",\"short_name\":\"vietnam\",\"domain_switcher_region_name\":\"Asia Pacific\"}]},{\"name\":\"Latin America\",\"domains\":[{\"id\":\"18\",\"domain_name\":\"freelancer.com.ar\",\"url\":\"https:\\\/\\\/www.freelancer.com.ar\",\"pattern\":\"\\\/freelancer.com.ar$\\\/\",\"name\":\"Argentina\",\"info\":\"Go to AR site\",\"info_selected\":\"Stay in AR\",\"flag_small\":\"ar.png\",\"flag_big\":\"ar-big.png\",\"sequence\":\"1000\",\"short_name\":\"argentina\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"25\",\"domain_name\":\"br.freelancer.com\",\"url\":\"https:\\\/\\\/www.br.freelancer.com\",\"pattern\":\"\\\/br.freelancer.com$\\\/\",\"name\":\"Brazil\",\"info\":\"Go to BR site\",\"info_selected\":\"Stay in BR\",\"flag_small\":\"br.png\",\"flag_big\":\"br-big.png\",\"sequence\":\"1010\",\"short_name\":\"brazil\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"46\",\"domain_name\":\"freelancer.cl\",\"url\":\"https:\\\/\\\/www.freelancer.cl\",\"pattern\":\"\\\/freelancer.cl$\\\/\",\"name\":\"Chile\",\"info\":\"Go to CL site\",\"info_selected\":\"Stay in CL\",\"flag_small\":\"cl.png\",\"flag_big\":\"cl-big.png\",\"sequence\":\"1020\",\"short_name\":\"chile\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"37\",\"domain_name\":\"freelancer.com.co\",\"url\":\"https:\\\/\\\/www.freelancer.com.co\",\"pattern\":\"\\\/freelancer.com.co$\\\/\",\"name\":\"Colombia\",\"info\":\"Go to CO site\",\"info_selected\":\"Stay in CO\",\"flag_small\":\"co.png\",\"flag_big\":\"co-big.png\",\"sequence\":\"1030\",\"short_name\":\"colombia\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"17\",\"domain_name\":\"freelancer.ec\",\"url\":\"https:\\\/\\\/www.freelancer.ec\",\"pattern\":\"\\\/freelancer.ec$\\\/\",\"name\":\"Ecuador\",\"info\":\"Go to EC site\",\"info_selected\":\"Stay in EC\",\"flag_small\":\"ec.png\",\"flag_big\":\"ec-big.png\",\"sequence\":\"1040\",\"short_name\":\"ecuador\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"15\",\"domain_name\":\"freelancer.mx\",\"url\":\"https:\\\/\\\/www.freelancer.mx\",\"pattern\":\"\\\/freelancer.mx$\\\/\",\"name\":\"Mexico\",\"info\":\"Go to MX site\",\"info_selected\":\"Stay in MX\",\"flag_small\":\"mx.png\",\"flag_big\":\"mx-big.png\",\"sequence\":\"1050\",\"short_name\":\"mexico\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"16\",\"domain_name\":\"freelancer.com.pe\",\"url\":\"https:\\\/\\\/www.freelancer.com.pe\",\"pattern\":\"\\\/freelancer.com.pe$\\\/\",\"name\":\"Peru\",\"info\":\"Go to PE site\",\"info_selected\":\"Stay in PE\",\"flag_small\":\"pe.png\",\"flag_big\":\"pe-big.png\",\"sequence\":\"1070\",\"short_name\":\"peru\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"31\",\"domain_name\":\"freelancer.uy\",\"url\":\"https:\\\/\\\/www.freelancer.uy\",\"pattern\":\"\\\/freelancer.uy$\\\/\",\"name\":\"Uruguay\",\"info\":\"Go to UY site\",\"info_selected\":\"Stay in UY\",\"flag_small\":\"uy.png\",\"flag_big\":\"uy-big.png\",\"sequence\":\"1080\",\"short_name\":\"uruguay\",\"domain_swit:cher_region_name\":\"Latin America\"}]}]}}\n"}]},{"id":"9271953","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9271952","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"95","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"95","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Reference, Path, Query, Action } from '.\/store'\n+import { backend } from '.\/backend';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+export interface ListOptions {\n+ query: QueryObservable;\n+}\n+\n+export interface QueryObservable {\n+ limit?: number|Observable<number>;\n+ offset?: number|Observable<number>;\n+}\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<RootModel>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {}\n+\n+ list<a extends keyof RootModel, b extends keyof RootModel[a]>(\n+ key1: a,\n+ key2: b|Observable<b>,\n+ options?: ListOptions\n+ ): ListObservable<Array<RootModel[a][b]>> {\n+\n+ const pathStream = Observable.combineLatest([\n+ (key1 instanceof Observable) ? key1 : Observable.of(key1),\n+ (key2 instanceof Observable) ? key2 : Observable.of(key2)\n+ ]);\n+\n+ const query = options ? options.query : {};\n+ const queryStream = Observable.combineLatest([\n+ (query.limit instanceof Observable) ? query.limit : Observable.of(query.limit),\n+ (query.offset instanceof Observable) ? query.offset : Observable.of(query.offset)\n+ ], (limit: number, offset: number) => ({ limit, offset }));\n+\n+ const refStream = Observable.combineLatest(\n+ [pathStream, queryStream],\n+ (path: Path, query: Query): Reference => ({path, query})\n+ )\n+ .multicast(() => new ReplaySubject(1))\n+ .refCount();\n+\n+ const fetchStream = refStream\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ if (backend[path[0]] && backend[path[0]].fetch) {\n+ return Observable.of((<any>backend)[path[0]].fetch(path[1], query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => {\n+ this.store.dispatch(<Action>{\n+ type: 'API_FETCH_SUCCESS',\n+ payload: { data, ref }\n+ })\n+ })\n+ .mapTo({path, query});\n+ } else {\n+ return Observable.empty();\n+ }\n+ });\n+\n+ \/\/ TODO: WebSocket -> liveStream\n+\n+ return new ListObservable(refStream, this.apiHttp, this.store,\n+ Observable.merge(refStream, fetchStream)\n+ .switchMap(({path, query}: any) =>\n+ this.store.pluck(...path)\n+ )\n+ .distinctUntilChanged()\n+ .map((data: any) => {\n+ if (data && data.lists) {\n+ \t\t\t\t\treturn (<any>data).lists['default']\n+ \t\t\t\t\t .slice(query.offset || 0)\n+ \t\t\t\t\t .map((id: any) => (<any>data).entities[<string>id]);\n+ } else {\n+ return [];\n+ }\n+ })\n+ );\n+\n+ }\n+\n+ \/\/ TODO: object() => new ObjectObservable()\n+\n+}\n"}]},{"id":"9271951","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5,\n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9271950","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9271949","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/backend.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Backend {\n+ fetch?: (key: string, query: any) => {\n+ endpoint: string;\n+ params: {\n+ [key: string]: string|number;\n+ };\n+ },\n+ post?: (key: string) => {\n+ endpoint: string;\n+ }\n+};\n+\n+export const backend: { [k: string]: Backend } = {\n+ threads: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/threads`,\n+ params: {\n+ unread_count: 'true',\n+ last_message: 'true',\n+ message_details: 'true',\n+ context_details: 'true',\n+ user_details: 'true',\n+ limit: query.limit\n+ }\n+ })\n+ },\n+ messages: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/messages`,\n+ params: {\n+ 'threads[]': key,\n+ }\n+ }),\n+ post: (key) => ({\n+ endpoint: `messages\/0.1\/threads\/${key}\/messages\/`,\n+ params: {\n+ thread_id: key\n+ }\n+ })\n+ }\n+};\n"}]},{"id":"9271948","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.params)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ post(config: any, payload: Object): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.post(`${this.config.apiBaseUrl}\/${config.endpoint}`,\n+ this.serialize({ ...payload, ...config.params }), {\n+ headers: authHeader,\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid , token}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${uid};${token}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ const params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ params.set('compact', 'true');\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9271947","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9271946","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n"}]},{"id":"9271945","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9271944","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9271943","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ uid: number;\n+ token: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const uid = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10);\n+ const token = this.cookies.get(this.authConfig.authHashCookie);\n+ this.next({ uid, token });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9271942","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n"}]},{"id":"9271941","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9271940","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-vb5ifm7oyktbwojnl6m3"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271939","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9271938","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888 -ssl\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.1\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9271937","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9271936","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9271935","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9271934","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9271933","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+See [The Webapp Playbook](https:\/\/phabricator.freelancer.com\/w\/gaf\/app).\n"}]},{"id":"9271932","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6\n"}]},{"id":"9271931","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9271930","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9271929","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9271928","metadata":{"line:first":727},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"974","newLength":"975","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/view_new.php$ https:\/\/$http_host\/projects\/$arg_id.html permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # data.freelancer.com remap\n rewrite ^\/data\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/$2\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/$2\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm\/ https:\/\/$host\/find\/?no_redirect=true&mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?no_redirect=true&mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n rewrite ^\/buyers\/welcome-employer\\.php$ https:\/\/$host\/onboard permanent;\n rewrite ^\/onboard$ \/buyers\/welcome-employer.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/user-sessions\/([0-9]+)$ \/admin\/support-queue\/user-support-sessions.php?userId=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php last;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z0-9\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # Cluster Directory Page\n rewrite ^\/outsource-directory\/?$ \/seo\/cluster-page-directory.php last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n \n rewrite ^\/adroll\/([\\w-\\.]+)\/([\\w-\\.]+)\/ https:\/\/$host\/hire\/$1\/$2\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/([\\w-\\.]+)\/([\\w-\\.]+) https:\/\/$host\/hire\/$1\/$2\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/([\\w-\\.]+)\/ https:\/\/$host\/hire\/$1\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/([\\w-\\.]+) https:\/\/$host\/hire\/$1\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll\/ https:\/\/$host\/hire\/?inline=false&no_redirect=true permanent;\n rewrite ^\/adroll$ https:\/\/$host\/hire\/?inline=false&no_redirect=true permanent;\n \n rewrite ^\/fb\/([\\w-\\.]+)\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/fb\/([\\w-\\.]+)\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/fb\/([\\w-\\.]+)\/ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/fb\/([\\w-\\.]+) https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/fb\/ https:\/\/$host\/find\/ permanent;\n rewrite ^\/fb$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/android-app-download\/?$ https:\/\/play.google.com\/store\/apps\/details?id=com.freelancer.android.messenger&utm_source=massmailer&utm_medium=email&utm_campaign=emailblast2.0 permanent;\n rewrite ^\/android-app-beta(\/)?$ https:\/\/$host\/mobile-app\/ permanent;\n \n # S3 backed requests\n rewrite ^\/(sitemap(?:_new)?_index.*\\.xml)$ \/s3.php?bucket=sitemap&key=$1 last;\n"}]},{"id":"9271927","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9271926","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter([\n 'contexts' => [\n new \\thrift\\messages\\Context([\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n ]),\n ],\n 'thread_members' => [$uid => $uid],\n ]);\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(['user_id' => $user]),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = [];\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = [\n 'skin\/inbox-page.less',\n ];\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9271925","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9271924","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271923","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9271922","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9271921","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9271920","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9271919","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { RouterModule, Routes } from '@angular\/router';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n-\n-const messagingInboxRoutes: Routes = [\n- {\n- path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forChild(messagingInboxRoutes),\n- ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class MessagingInboxRoutingModule { }\n"}]},{"id":"9271918","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9271917","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9271916","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9271915","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9271914","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9271913","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9271912","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9271911","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9271910","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9271909","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9271908","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9271907","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9271906","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9271905","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"40","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"40","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n-import { Thread, ThreadService } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-list',\n- template: `\n- <div *ngFor=\"let thread of threads;\">\n- - - - - - - - - - - - - - - - - - - - - - -\n- <thread-item [thread]=\"thread\"\n- openThread=\"onOpenThread($event)\">\n- <\/thread-item>\n- - - - - - - - - - - - - - - - - - - - - - -\n- <\/div>\n- `,\n-})\n-export class ThreadListComponent implements OnInit {\n- @Output() openThread = new EventEmitter<Thread>();\n-\n- threads: Thread[];\n-\n- constructor(private threadService: ThreadService) {}\n-\n- getThreads() {\n- this.threads = [{\n- people: ['Laurent', 'Andrew', 'Geoff'],\n- }, {\n- people: ['Steven', 'Diego'],\n- }];\n- \/\/ this.threadService.getThreads()\n- \/\/ .subscribe(threads => this.threads = threads);\n- }\n-\n- ngOnInit() {\n- this.getThreads();\n- }\n-\n- onOpenThread($event: Thread) {\n- this.openThread.emit($event);\n- }\n-}\n"}]},{"id":"9271904","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9271903","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9271902","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9271901","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9271900","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9271899","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9271898","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9271897","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9271896","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9271895","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9271894","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"398","newLength":"373","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"preconnect\" href=\"\/\/www.f-cdn.com\" crossorigin>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!show_support_banner!\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n !show_support_banner!}}\n ?IS_AUTH?}}\n {{?show_support_banner?\n <div class=\"important-announcement\" data-target=\"support-important-announcement\">\n {{<systemjs_module('support-banner')>}}\n <\/div>\n ?show_support_banner?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{!skip_messaging_modules!\n {{<systemjs_server_data(\"messaging\", \"hideMessaging\", \"{{hide_messaging}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <div class=\"Chat\">\n <fl-messaging-chat class=\"ChatBox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n class=\"ChatBox-wrapper-inner\"\n ng-repeat=\"attributes in ctrl.chatboxes | visible: ctrl.hideMessaging\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n \n <!-- contact list section -->\n {{!hide_messaging!\n <fl-messaging-contacts-new class=\"ContactList-wrapper\">\n <\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n !hide_messaging!}}\n <\/div>\n \n <div id=\"toast-notifications-wrapper\"><\/div>\n !skip_messaging_modules!}}\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9271893","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"48","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1278","newLength":"1232","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS_https --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 babel-node scripts\/build-assets\/critical-css.js --cwd .\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-angular\": \"^1.6.1\",\n \"eslint-plugin-freelancer\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-freelancer.git#v1.1.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"object-fit-images\": \"^3.1.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-object-fit-images\": \"^1.1.2\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n \"eslint-nibble\": \"~3.1.0\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"crypto-js\": \"npm:crypto-js@^3.1.9-1\",\n \"fl-autosize\": \"gitlab:angular\/autosize@3.0.21\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.12.2\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jquery-validation\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"slick-carousel\": \"github:kenwheeler\/slick@1.6.0\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"npm:jspm-nodelibs-path@^0.2.0\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-touch.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n- \"npm:@angular\/common@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/compiler@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/core@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/forms@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/http@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/platform-browser@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/router@3.2.4\": {\n- \"main\": \"index.js\"\n- },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jquery-validation\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.2\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.1\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:svgo@0.7.2\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n },\n \"github:kenwheeler\/slick@1.6.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"slick\/slick.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n },\n \"slick\/*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9271892","metadata":{"line:first":18},"oldPath":".arclint","currentPath":".arclint","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"343","newLength":"344","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"exclude\": [\n \"(^public\/lib\/thrift\/packages\/)\",\n \"(^public\/static\/.*\/bower_components\/)\",\n \"(^public\/static\/css\/bootstrap\/)\",\n \"(^public\/static\/css\/critical-css\/)\",\n \"(^public\/static\/css\/js-plugins\/)\",\n \"(^public\/static\/@styles)\",\n \"(^support\/flarc\/.*\\\\.lint-test$)\"\n ],\n \"linters\": {\n \"chmod\": {\n \"type\": \"chmod\"\n },\n \"filename\": {\n \"type\": \"filename\",\n \"exclude\": [\n- \"(^public\/static\/modules\/)\"\n+ \"(^public\/static\/modules\/)\",\n+ \"(^webapp\/)\"\n ]\n },\n \"generated\": {\n \"type\": \"generated\"\n },\n \"javascript\": {\n \"type\": \"jshint\",\n \"include\": \"(\\\\.js$)\",\n \"exclude\": [\n \"(^public\/static\/angularjs\/)\",\n \"(^public\/static\/modules\/)\",\n \"(^public\/tests\/js\/app_tests\/)\",\n \"(^scripts\/build-assets\/.*\\\\.js$)\",\n \"(\\\\.min\\\\.js$)\"\n ],\n \"jshint.jshintignore\": \"support\/lint\/jshintignore\",\n \"jshint.jshintrc\": \"support\/lint\/default.jshintrc\"\n },\n \"javascript-angularjs\": {\n \"type\": \"jshint\",\n \"include\": [\n \"(^public\/static\/angularjs\/.*\\\\.js$)\"\n ],\n \"jshint.jshintrc\": \"support\/lint\/angularjs.jshintrc\"\n },\n \"javascript-modules\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^public\/static\/modules\/.*\\\\.js$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"public\/static\/modules\/.eslintrc\"\n },\n \"typescript-modules\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^public\/static\/modules\/.*\\\\.ts$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"public\/static\/modules\/.eslintrc_ts\"\n },\n \"javascript-node\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^scripts\/build-assets\/.*\\\\.js$)\"\n ],\n \"exclude\": [\n \"(^scripts\/build-assets\/legacy\/.*\\\\.js$)\",\n \"(^scripts\/build-assets\/Gruntfile.js$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"scripts\/build-assets\/.eslintrc\"\n },\n \"javascript-node-legacy\": {\n \"type\": \"jshint\",\n \"include\": [\n \"(^scripts\/build-assets\/legacy\/.*\\\\.js$)\",\n \"(^scripts\/build-assets\/Gruntfile.js$)\"\n ],\n \"jshint.jshintrc\": \"support\/lint\/node.jshintrc\"\n },\n \"json\": {\n \"type\": \"json\",\n \"include\": [\n \"(^\\\\.arcconfig$)\",\n \"(^\\\\.arclint$)\",\n \"(\\\\.babelrc$)\",\n \"(\\\\.book$)\",\n \"(\\\\.eslintrc$)\",\n \"(\\\\.jshintrc$)\",\n \"(\\\\.stylelintrc$)\",\n \"(\\\\.json$)\"\n ]\n },\n \"less\": {\n \"type\": \"lessc\",\n \"include\": \"(\\\\.less$)\",\n \"bin\": \"node_modules\/.bin\/lessc\",\n \"flags\": [\n \"--include-path=public\/static\/css\"\n ]\n },\n \"merge-conflict\": {\n \"type\": \"merge-conflict\"\n },\n \"nolint\": {\n \"type\": \"nolint\"\n },\n \"php\": {\n \"type\": \"xhpast\",\n \"include\": \"(\\\\.php$)\",\n \"exclude\": [\n \"(^src\/)\",\n \"(^test\/)\",\n \"(^support\/flarc\/.*\\\\.php$)\"\n ],\n \"severity\": {\n \"5\": \"warning\",\n \"9\": \"disabled\",\n \"19\": \"disabled\",\n \"57\": \"disabled\",\n \"78\": \"warning\"\n },\n \"xhpast.blacklisted.function\": {\n \"__halt_compiler\": \"The `__halt_compiler` function should not be used.\",\n \"class_alias\": \"The `class_alias` function should be avoided. It makes debugging more difficult.\",\n \"create_function\": \"The `create_function` function is essentially equivalent to `eval`. You should use anonymous functions instead.\",\n \"dl\": \"The `dl` function should not be used to load a PHP extension.\",\n \"eval\": \"The `eval` function should be avoided. It is potentially unsafe and makes debugging more difficult.\",\n \"get_magic_quotes_gpc\": \"This function always returns `false` in PHP version greater than or equal to 5.4.0.\",\n \"get_magic_quotes_runtime\": \"This function always returns `false` in PHP version greater than or equal to 5.4.0.\",\n \"phpcredits\": \"The `phpcredits` function should not be used.\",\n \"phpinfo\": \"The `phpinfo` function should not be used.\"\n },\n \"xhpast.deprecated.class\": {\n \"Encryption\": \"The `Encryption` class doesn't properly encrypt data.\",\n \"FasterLoginHandler\": \"Use the `InstantLoginHandler` class instead.\",\n \"FastLoginHandler\": \"Use the `InstantLoginHandler` class instead.\",\n \"FloatRegister\": true,\n \"FloatTimeRegister\": true,\n \"FreelancerToken\": true,\n \"HashUtil\": true,\n \"IntRegister\": true,\n \"IntTimeRegister\": true,\n \"NumberRegister\": true,\n \"NumberTimeRegister\": true,\n \"Register\": true,\n \"S3\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Aws\\\\S3Client` class instead.\"\n },\n \"xhpast.deprecated.functions\": {\n \"adapt_page\": \"\",\n \"append_uri_tracing_comment\": \"Use the `DB` class instead.\",\n \"array_columns\": \"\",\n \"array_columns_to_key_values\": \"\",\n \"array_flatten_kvstore\": \"\",\n \"array_for_enduser\": \"\",\n \"arrayGet\": \"Use `idx` instead.\",\n \"arrayIndexByKey\": \"\",\n \"arrayPath\": \"\",\n \"arrayPluck\": \"\",\n \"array_to_idarray\": \"\",\n \"array_values_to_keys\": \"\",\n \"check_allowed_domains\": \"\",\n \"check_email\": \"\",\n \"check_form_token\": \"\",\n \"check_id\": \"\",\n \"check_sortdir\": \"\",\n \"check_url\": \"\",\n \"closeNotificationDBConnection\": \"Use the `DB` class instead.\",\n \"compare_float\": \"\",\n \"connectToNotificationDB\": \"Use the `DB` class instead.\",\n \"connectToSlaveDB\": \"Use the `DB` class instead.\",\n \"createRegisterObject\": \"\",\n \"csrfprotectionhandler::logcsrfstatus\": \"Use CSRFProtectionHandler::isValidRequest() and handle the boolean result instead.\",\n \"DB::insertMaster\": \"Consider using the `DB::queryMaster` method instead.\",\n \"DB::updateMaster\": \"Consider using the `DB::queryMaster` method instead.\",\n \"decrypt_cookie\": \"\",\n \"dumpTrace\": \"\",\n \"encrypt_cookie\": \"\",\n \"error_log\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"exec_func\": \"\",\n \"execsql\": \"Use the `DB` class instead.\",\n \"generate_form_token\": \"\",\n \"get_affected_row\": \"Use the `DB` class instead.\",\n \"getCurrentDBConnection\": \"Use the `DB` class instead.\",\n \"getDebugPrintBacktrace\": \"Use the `DB` class instead.\",\n \"getHelpItem\": \"\",\n \"getHelpItemLink\": \"\",\n \"get_insert_id\": \"Use the `DB` class instead.\",\n \"get_limits\": \"\",\n \"get_limits_array\": \"\",\n \"get_page_link_str\": \"\",\n \"get_page_link_vars\": \"\",\n \"get_pages_link_str\": \"\",\n \"get_pages_link_vars\": \"\",\n \"getRegister\": \"\",\n \"get_register_value\": \"\",\n \"get_sql_result\": \"Use the `DB` class instead.\",\n \"helplink\": \"\",\n \"inc_register\": \"\",\n \"insert_on_master\": \"Use the `DB` class instead.\",\n \"insert\": \"Use the `DB` class instead.\",\n \"is_valid_goto_url\": \"\",\n \"localise_email\": \"Use the `MailHandler::getEmailReceiverData` method instead.\",\n \"logDbError\": \"Use the `DB` class instead.\",\n \"log_exception\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::warning` method instead.\",\n \"log_notice\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::notice` method instead.\",\n \"log_warning\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::warning` method instead.\",\n \"merge_any_arrays\": \"\",\n \"mysql_array_to_set\": \"Use the `DB` class instead.\",\n \"mysql_affected_rows\": \"Use the `DB` class instead.\",\n \"mysql_client_encoding\": \"Use the `DB` class instead.\",\n \"mysql_close\": \"Use the `DB` class instead.\",\n \"mysql_connect\": \"Use the `DB` class instead.\",\n \"mysql_create_db\": \"Use the `DB` class instead.\",\n \"mysql_data_seek\": \"Use the `DB` class instead.\",\n \"mysql_db_name\": \"Use the `DB` class instead.\",\n \"mysql_db_query\": \"Use the `DB` class instead.\",\n \"mysql_drop_db\": \"Use the `DB` class instead.\",\n \"mysql_errno\": \"Use the `DB` class instead.\",\n \"mysql_error\": \"Use the `DB` class instead.\",\n \"mysql_fetch_assoc\": \"Use the `DB` class instead.\",\n \"mysql_fetch_array\": \"Use the `DB` class instead.\",\n \"mysql_fetch_field\": \"Use the `DB` class instead.\",\n \"mysql_fetch_lengths\": \"Use the `DB` class instead.\",\n \"mysql_fetch_object\": \"Use the `DB` class instead.\",\n \"mysql_fetch_row\": \"Use the `DB` class instead.\",\n \"mysql_field_flags\": \"Use the `DB` class instead.\",\n \"mysql_field_len\": \"Use the `DB` class instead.\",\n \"mysql_field_name\": \"Use the `DB` class instead.\",\n \"mysql_field_seek\": \"Use the `DB` class instead.\",\n \"mysql_field_table\": \"Use the `DB` class instead.\",\n \"mysql_field_type\": \"Use the `DB` class instead.\",\n \"mysql_free_result\": \"Use the `DB` class instead.\",\n \"mysql_get_client_info\": \"Use the `DB` class instead.\",\n \"mysql_get_host_info\": \"Use the `DB` class instead.\",\n \"mysql_get_proto_info\": \"Use the `DB` class instead.\",\n \"mysql_get_server_info\": \"Use the `DB` class instead.\",\n \"mysql_info\": \"Use the `DB` class instead.\",\n \"mysql_insert_id\": \"Use the `DB` class instead.\",\n \"mysql_list_dbs\": \"Use the `DB` class instead.\",\n \"mysql_list_fields\": \"Use the `DB` class instead.\",\n \"mysql_list_processes\": \"Use the `DB` class instead.\",\n \"mysql_list_tables\": \"Use the `DB` class instead.\",\n \"mysql_num_fields\": \"Use the `DB` class instead.\",\n \"mysql_num_rows\": \"Use the `DB` class instead.\",\n \"mysql_pconnect\": \"Use the `DB` class instead.\",\n \"mysql_ping\": \"Use the `DB` class instead.\",\n \"mysql_query\": \"Use the `DB` class instead.\",\n \"mysql_real_escape_string\": \"Use the `DB` class instead.\",\n \"mysql_result\": \"Use the `DB` class instead.\",\n \"mysql_select_db\": \"Use the `DB` class instead.\",\n \"mysql_set_charset\": \"Use the `DB` class instead.\",\n \"mysql_stat\": \"Use the `DB` class instead.\",\n \"mysql_tablename\": \"Use the `DB` class instead.\",\n \"mysql_thread_id\": \"Use the `DB` class instead.\",\n \"mysql_unbuffered_query\": \"Use the `DB` class instead.\",\n \"prepare_amount\": \"\",\n \"prepare_check\": \"\",\n \"prepare_country\": \"\",\n \"prepare_currency\": \"\",\n \"prepare_double\": \"\",\n \"prepare_email\": \"\",\n \"prepare_fax\": \"\",\n \"prepare_filename\": \"\",\n \"prepare_int\": \"\",\n \"prepare_phone\": \"\",\n \"prepare_sql_datetime\": \"\",\n \"prepare_string\": \"\",\n \"prepare_time\": \"\",\n \"query_arrays_on_slave\": \"Use the `DB` class instead.\",\n \"query_arrays\": \"Use the `DB` class instead.\",\n \"query_arrays_without_unslash\": \"Use the `DB` class instead.\",\n \"query_count_on_slave\": \"Use the `DB` class instead.\",\n \"query_count\": \"Use the `DB` class instead.\",\n \"query_one_array_on_slave\": \"Use the `DB` class instead.\",\n \"query_one_array\": \"Use the `DB` class instead.\",\n \"query_only\": \"Use the `DB` class instead.\",\n \"redirect301\": \"\",\n \"restoreDBConnection\": \"Use the `DB` class instead.\",\n \"restoreMasterConnection\": \"Use the `DB` class instead.\",\n \"round_money\": \"\",\n \"select_arrays_on_slave\": \"Use the `DB` class instead.\",\n \"select_arrays\": \"Use the `DB` class instead.\",\n \"select_one_array\": \"Use the `DB` class instead.\",\n \"select_only\": \"Use the `DB` class instead.\",\n \"set_register\": \"\",\n \"trigger_error\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"update_on_master\": \"Use the `DB` class instead.\",\n \"update\": \"Use the `DB` class instead.\",\n \"urlsafe_64decode\": \"\",\n \"urlsafe_64encode\": \"\",\n \"user_error\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"usingSlave\": \"Use the `DB` class instead.\"\n },\n \"xhpast.php-version\": \"5.4.45\"\n },\n \"php-strict\": {\n \"type\": \"xhpast\",\n \"include\": [\n \"(^src\/.*\\\\.php$)\",\n \"(^test\/.*\\\\.php$)\"\n ],\n \"xhpast.php-version\": \"5.4.45\"\n },\n \"spelling\": {\n \"type\": \"spelling\"\n },\n \"stylelint\": {\n \"type\": \"stylelint\",\n \"include\": \"(^public\/static\/css\/flux\/(modules|layout)\/.*\\\\.less$)\",\n \"bin\": \"node_modules\/.bin\/stylelint\",\n \"stylelint.config\": \"public\/static\/css\/.stylelintrc\"\n },\n \"text\": {\n \"type\": \"text\",\n \"exclude\": [\n \"(^public\/.*\\\\.html?$)\",\n \"(\\\\.svg$)\",\n \"(^scripts\/build-assets\/build.js$)\"\n ],\n \"severity\": {\n \"4\": \"autofix\"\n },\n \"text.max-line-length\": 150\n },\n \"xml\": {\n \"type\": \"xml\",\n \"include\": [\n \"(\\\\.svg$)\",\n \"(\\\\.(xml|xsl)$)\"\n ]\n },\n \n \"phutil-library\": {\n \"type\": \"phutil-library\",\n \"include\": \"(^support\/flarc\/.*\\\\.php$)\"\n },\n \"phutil-php\": {\n \"type\": \"xhpast\",\n \"include\": \"(^support\/flarc\/.*\\\\.php$)\",\n \"standard\": \"phutil.xhpast\"\n }\n }\n }\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"0eb0f6302e8fc0bdb5fda27cebf355fb11cbeaa6":{"commit":"0eb0f6302e8fc0bdb5fda27cebf355fb11cbeaa6","tree":"74b5e96c640a7d806db1247584d3ece25ef17c46","parents":["7467434a00354b3588402d9208c1145bdfd8742d","edc467722dae0db815049e97a9cad894aa2d8614"],"time":"1488991623","author":"Laurent Goudet","summary":"Merge remote-tracking branch 'origin\/master' into laurent-webapp","message":"Merge remote-tracking branch 'origin\/master' into laurent-webapp","authorEmail":"laurent@freelancer.com"},"7467434a00354b3588402d9208c1145bdfd8742d":{"commit":"7467434a00354b3588402d9208c1145bdfd8742d","tree":"c5663d9a1e2a23833517d46410066f699611099b","parents":["1ddb857de346293e87ce856b45a3924b3092606f"],"time":"1488991469","author":"Laurent Goudet","summary":"update readme","message":"update readme","authorEmail":"laurent@freelancer.com"},"1ddb857de346293e87ce856b45a3924b3092606f":{"commit":"1ddb857de346293e87ce856b45a3924b3092606f","tree":"8c70af9eeee6a7457179f31372e236a460f78d84","parents":["2fffeeb3cf709d5015bc15808b2d3ca61b944d2e"],"time":"1488991262","author":"Laurent Goudet","summary":"more cleanup","message":"more cleanup","authorEmail":"laurent@freelancer.com"},"2fffeeb3cf709d5015bc15808b2d3ca61b944d2e":{"commit":"2fffeeb3cf709d5015bc15808b2d3ca61b944d2e","tree":"c6d40d09d21b19034620ce6aa3f12d5acb98c933","parents":["2a467dc6590b787ebbab072ea11be0d4ee62956b"],"time":"1488990967","author":"Laurent Goudet","summary":"cleanup","message":"cleanup","authorEmail":"laurent@freelancer.com"},"2a467dc6590b787ebbab072ea11be0d4ee62956b":{"commit":"2a467dc6590b787ebbab072ea11be0d4ee62956b","tree":"498a3e87259e5c1c160463f1077774900b220322","parents":["131f7a148dcfbcadbd3df6d177b7882b006f73f0"],"time":"1488990658","author":"Laurent Goudet","summary":"pluck pluck plucking","message":"pluck pluck plucking","authorEmail":"laurent@freelancer.com"},"131f7a148dcfbcadbd3df6d177b7882b006f73f0":{"commit":"131f7a148dcfbcadbd3df6d177b7882b006f73f0","tree":"4f17b76b5c288f0726738cb8dbe8b91c00286237","parents":["79b6461eb65a7d3a9dd7a5120496b34aed731aea"],"time":"1488990284","author":"Laurent Goudet","summary":"more improvements","message":"more improvements","authorEmail":"laurent@freelancer.com"},"79b6461eb65a7d3a9dd7a5120496b34aed731aea":{"commit":"79b6461eb65a7d3a9dd7a5120496b34aed731aea","tree":"35b936db1e49a3aa6e0486031a1d70bb98fc16fc","parents":["a3f34334da468fa18fce95cfdd6d07057d1c3e88"],"time":"1488986050","author":"Laurent Goudet","summary":"Update cli to rc1","message":"Update cli to rc1","authorEmail":"laurent@freelancer.com"},"a3f34334da468fa18fce95cfdd6d07057d1c3e88":{"commit":"a3f34334da468fa18fce95cfdd6d07057d1c3e88","tree":"41cd820055f91b119d9c8a797bdbd83791eca5f0","parents":["2b096f05e8550a621882e4da5e8d3b1a5f3ddae4"],"time":"1488985757","author":"Laurent Goudet","summary":"Finish renaming","message":"Finish renaming","authorEmail":"laurent@freelancer.com"},"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4":{"commit":"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4","tree":"579fb8566e194b3d80a6543b304c56ffc9263a7a","parents":["203a6aa47f50467ad46e556442f65d2c5aa574c6"],"time":"1488984749","author":"Laurent Goudet","summary":"more renaming","message":"more renaming","authorEmail":"laurent@freelancer.com"},"203a6aa47f50467ad46e556442f65d2c5aa574c6":{"commit":"203a6aa47f50467ad46e556442f65d2c5aa574c6","tree":"3bb4fc3a032bebb279f521ab7fb269f6aba8c600","parents":["99562cd0ca1d33a5132cb132bfb5a79f46c1a057"],"time":"1488978328","author":"Laurent Goudet","summary":"it works","message":"it works","authorEmail":"laurent@freelancer.com"},"99562cd0ca1d33a5132cb132bfb5a79f46c1a057":{"commit":"99562cd0ca1d33a5132cb132bfb5a79f46c1a057","tree":"a90b746681e137aa40e21d6aa2e82be7022cb3d9","parents":["8c26bbd83a354887739377f4beb4a3e82e3905e2"],"time":"1488903326","author":"Laurent Goudet","summary":"bugz","message":"bugz","authorEmail":"laurent@freelancer.com"},"8c26bbd83a354887739377f4beb4a3e82e3905e2":{"commit":"8c26bbd83a354887739377f4beb4a3e82e3905e2","tree":"32398a01d49efebce64b2f14d55cfdf0babc5dc5","parents":["fca85f7440b205d1b05d860cae596e72cae65150"],"time":"1488902573","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"fca85f7440b205d1b05d860cae596e72cae65150":{"commit":"fca85f7440b205d1b05d860cae596e72cae65150","tree":"0b44b65f63fe3bd3a590632ccb4681afd1de402c","parents":["4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c"],"time":"1488819407","author":"Laurent Goudet","summary":"Bugz fixing","message":"Bugz fixing","authorEmail":"laurent@freelancer.com"},"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c":{"commit":"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c","tree":"e86302ebe2ecb73a3e4893f93119efd6f1ea458c","parents":["c3815d83d0278276714c527df4b976ff2c29aa19"],"time":"1488818884","author":"Laurent Goudet","summary":"Dynamic queries handling","message":"Dynamic queries handling","authorEmail":"laurent@freelancer.com"},"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"700398":{"id":"700398","revisionID":"56417","dateCreated":"1488991403","dateModified":"1488991406","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - more cleanup","unitStatus":"1","lintStatus":"3","changes":[{"id":"9271891","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5280","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5280","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n"}]},{"id":"9271890","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271889","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9271888","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9271887","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.key","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN RSA PRIVATE KEY-----\n+MIICWwIBAAKBgQCmipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LV\n+g\/kgt79am1bnF+\/HF880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R\n+1uHyD\/46sYtMejy3n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQAB\n+AoGATqG34hCSf11mWDUPNXjuCcz8eLF8Ugab\/pMngrPR2OWOSKue4y73jmITYBVd\n+96iOlqMAOxpmfFp\/R81PIHdi++Bax1NfSBT8tK0U7HHzkbHEXyvHiBSug78Y14h8\n+Y\/NMZXEvVapY7lapr5ZgOSf2rcKOlceMRsoohl6bGc+55BECQQDPZTw5WxDDe7\/W\n+oYzHy7abLw+A92cP8A6qlwXBik9ko6jtYXvoI454OIr6RsHoFPU9bUkx5G1fvOUZ\n+J3sxfxMZAkEAzZJEwcvmxHizX\/2NZZ8LvVyWGpao07bBcAEvDXDZFOZqKUujukOe\n+iilQD6JZDJTmW9RJmOgdQKeL9ZaTlX3MqwJASMJrbnPUXcB8fQAQM8f0OF06QzSI\n+o77EZnS1QEEVuWjxStZ4ceiHgwXTPBq2zIUNxI8irq5E8OGEPl7riWHbgQJARzqL\n+QGsaRrFb1cLRH4kAVFikWgoh7VnBpMGEQC\/9x9QerLhcvsl3QYAXEZO7LzTYrLDd\n+33Ft0V08jZfjA0VXiQJAOwX6glfDKf79AK1sifFQc\/v0Yu87LIOAwp0zLlsnO0Q9\n+xQV3TdjlNQebfTG+Uw1tmbcCb2wcGFfD199IHpAzIA==\n+-----END RSA PRIVATE KEY-----\n"}]},{"id":"9271886","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.crt","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN CERTIFICATE-----\n+MIICAzCCAWwCCQDlm49KXF45gzANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJB\n+VTETMBEGA1UECBMKU29tZS1TdGF0ZTEQMA4GA1UEChMHR3J1bnRKUzEQMA4GA1UE\n+AxMHMC4wLjAuMDAeFw0xNDAyMTkyMzE1NDRaFw0xNTAyMTkyMzE1NDRaMEYxCzAJ\n+BgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRAwDgYDVQQKEwdHcnVudEpT\n+MRAwDgYDVQQDEwcwLjAuMC4wMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm\n+ipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LVg\/kgt79am1bnF+\/H\n+F880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R1uHyD\/46sYtMejy3\n+n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQABMA0GCSqGSIb3DQEB\n+BQUAA4GBADnTBlN7+Aa8zj2zsUBSUv9w7iYut3ZDvrEY+IJt8EurwA6+Q7rQqVsY\n+an5ztiEESriWvqNIfvWb+Yekhv9sISJFMfApVbimmT6QseQcFEIlRNW5cfukHQVH\n+9dBI7upQO2vN7N9ABo4a3aBANMBxIvCnE+adiqNOTJF\/8qkiAFY9\n+-----END CERTIFICATE-----\n"}]},{"id":"9271885","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9271884","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9271883","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9271882","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9271881","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9271880","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271879","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9271878","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9271877","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-m7ufymzcbrubhahzptt4"},"oldPath":"webapp\/src\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271876","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const environment = {\n+ production: false,\n+ gafBaseUrl: 'https:\/\/laurent.syd1.fln-dev.net',\n+ authConfig: {\n+ baseUrl: `https:\/\/laurent.syd1.fln-dev.net\/auth`,\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/api`,\n+ ajaxBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/ajax`,\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n"}]},{"id":"9271875","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271874","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9271873","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271872","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+import 'rxjs\/add\/observable\/merge';\n+import 'rxjs\/add\/observable\/from';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/merge';\n+import 'rxjs\/add\/operator\/mergeMap';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/pluck';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n+import 'rxjs\/add\/operator\/multicast';\n+import 'rxjs\/add\/operator\/scan';\n+import 'rxjs\/add\/operator\/take';\n"}]},{"id":"9271871","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.assign(`${environment.gafBaseUrl}${state.url}`);\n+ return false;\n+ }\n+}\n"}]},{"id":"9271870","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"55","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"55","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ template: `\n+ <div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+\n+ <!-- <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>-->\n+ <\/div>\n+ `,\n+})\n+export class ThreadComponent {\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.messages = this.datastore.list(\n+ 'messages',\n+ this.route.params.map(({threadId}) => threadId), {\n+ query: {\n+ limit: 10\n+ }\n+ }\n+ );\n+ }\n+\n+ sendMessage(message: string) {\n+ this.auth.switchMap(({uid}) =>\n+ this.messages.push({\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ busy: true,\n+ from_user: uid.toString()\n+ })\n+ ).toPromise();\n+ }\n+}\n"}]},{"id":"9271869","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9271868","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9271867","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread.thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9271866","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9271865","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+\n+ <fl-user-avatar [src]=\"thread.owner.avatar\"\n+ class=\"avatar\">\n+ <\/fl-user-avatar>\n+ <div class=\"body\">\n+ <div class=\"body-content-username\"\n+ *ngFor=\"let member of thread.members; let $last = last;\">\n+ {{ member.username }}<span *ngIf=\"!$last\">,<\/span>\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{ thread.message.message }}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9271864","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"33","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9271863","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9271862","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9271861","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9271860","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9271859","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9271858","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9271857","metadata":{"line:first":1,"copy:lines":{"47":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"48":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"49":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"50":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"50","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"50","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ThreadComponent,\n+ EmptyThreadComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n"}]},{"id":"9271856","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"70","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"70","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Thread } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <router-outlet><\/router-outlet>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ \/\/threadsUnreadCount: ObjectObservable<ThreadUnreadCount>;\n+ threadsLimit = new Subject<number>();\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ const uid = this.auth.map(({uid}) => uid.toString());\n+ this.threads = this.datastore.list('threads', uid, {\n+ query: {\n+ limit: this.threadsLimit\n+ .startWith(10)\n+ .scan((acc, curr) => acc + curr)\n+ }\n+ }\n+ );\n+ \/\/this.threadsUnreadCount = this.datastore.list('threadsUnreadCount', uid);\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.next(count);\n+ }\n+\n+ createThread() {\n+ \/\/this.threads.push(...);\n+ }\n+\n+}\n"}]},{"id":"9271855","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9271854","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",3,"-"],"7":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",6,"-"],"8":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",7,"-"],"9":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",8,"-"],"10":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",9,"-"],"24":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",16,"-"],"25":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",17,"-"],"26":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",18,"-"],"27":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",19,"-"],"28":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",20,"-"],"29":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",21,"-"],"30":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",25,"-"],"31":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",26,"-"],"32":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",27,"-"],"33":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",28,"-"],"34":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",29,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { RouterModule, Routes } from '@angular\/router';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { AuthGuard } from '..\/auth-guard.service';\n+\n+const messagingInboxRoutes: Routes = [\n+ {\n+ path: '',\n+ canActivate: [AuthGuard],\n+ component: MessagingInboxComponent,\n+ children: [\n+ {\n+ path: '',\n+ component: EmptyThreadComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: ThreadComponent\n+ }\n+ ]\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forChild(messagingInboxRoutes),\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class MessagingInboxRoutingModule { }\n"}]},{"id":"9271853","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message of messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9271852","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9271851","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9271850","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9271849","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message = new EventEmitter<string>();\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9271848","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9271847","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9271846","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9271845","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/empty-thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: `\n+ <div>\n+ NO THREAD SELECTED\n+ <\/div>\n+ `,\n+})\n+export class EmptyThreadComponent {\n+\n+}\n"}]},{"id":"9271844","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9271843","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9271842","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9271841","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9271840","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.uid) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9271839","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9271838","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9271837","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9271836","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"35","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"35","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n"}]},{"id":"9271835","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9271834","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/user-avatar.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular\/core';\n+@Component({\n+ selector: 'fl-user-avatar',\n+ template: `\n+ <img [src]=\"avatarUrl\" \/>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class UserAvatarComponent implements OnChanges {\n+ private avatarUrl: string;\n+ @Input() src: string;\n+\n+ constructor() {}\n+\n+ ngOnChanges() {\n+ if (this.src) {\n+ this.avatarUrl = `https:\/\/laurent.syd1.fln-dev.net${this.src}`;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9271833","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271832","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n+import { UserAvatarComponent } from '.\/user-avatar.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9271831","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9271830","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9271829","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9271828","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+\n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+\n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+\n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+\n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+\n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+\n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver;\n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9271827","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9271826","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9271825","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9271824","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9271823","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9271822","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9271821","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9271820","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9271819","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use\n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+\n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9271818","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/verification-banner\/verificationBanner.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface VerificationBanners {\n+ [userId: string]: VerificationBanner\n+}\n+\n+export interface VerificationBanner {\n+ email: string;\n+ params: string; \/\/ \"id=15540180&key=8656f81647a32f8331bea7921d0cef14dc9929e8\"\n+ showPhoneVerifyBanner: boolean;\n+ show_resend_btn: boolean;\n+ type_of_notif: string; \/\/ \"email\"\n+ username: string; \/\/ \"laurent\"\n+}\n"}]},{"id":"9271817","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9271816","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Thread, ThreadUnreadCount } from '.\/thread.model';\n+\n+export const threadReducer = (\n+ state: Readonly<{ [userId: string]: Entities<Thread> }> = {},\n+ action: Action\n+): Readonly<{ [userId: string]: Entities<Thread> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ console.log('threadReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ Denoramlize the Thread API response\n+ const contextDetails = data.context_details;\n+ const users = data.users;\n+ const threads = data.threads.reduce((acc: any, thread: any) => {\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.project = contextDetails.projects[context.id];\n+ } else {\n+ context.contest = contextDetails.contests[context.id];\n+ }\n+ context.id = undefined;\n+ const members = thread.thread.members.map((memberId: number) => {\n+ return { ...users[memberId], ...{\n+ \/\/ Avatar CDN URLs returned by the API are crap\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ });\n+ const owner = { ...users[thread.thread.owner], ...{\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ const threadInner = { ...thread.thread, context, members, owner };\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ acc[thread.id] = { ...thread , ...{ thread: threadInner }, messages };\n+ return acc;\n+ }, {});\n+\n+ return mergeEntities(state, threads, ref);\n+\n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n+export const threadUnreadCountReducer =\n+ (state: Entities<ThreadUnreadCount> = {}, action: Action): Entities<ThreadUnreadCount> => {\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ return mergeEntities(state, data.unread_thread_count, ref);\n+ return state;\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9271815","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface ThreadUnreadCount {\n+ unread_thread_count: number;\n+}\n+\n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ type: 'project' | 'contest';\n+ contest?: any;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD\n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9271814","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"73","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"73","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+import { RootModel } from '.\/root.model';\n+\n+import { Thread, ThreadUnreadCount } from '.\/thread\/thread.model';\n+import { threadReducer, threadUnreadCountReducer } from '.\/thread\/thread.reducer';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+\n+import { Observable } from 'rxjs\/Observable';\n+\n+export interface Reference {\n+ path: Path;\n+ query: Query;\n+}\n+\n+export type Path = [keyof RootModel, string];\n+\n+export interface Query {\n+ limit?: number;\n+ offset?: number;\n+}\n+\n+export interface Action {\n+ type: ActionType;\n+ payload?: {\n+ data: any;\n+ ref: Reference;\n+ }\n+}\n+\n+export type ActionType = 'API_FETCH_SUCCESS'\n+ | 'API_POST'\n+ | 'API_POST_SUCCESS';\n+\n+export interface Entities<T> {\n+ entities?: {\n+ [id: string]: T;\n+ };\n+ lists?: {\n+ [query: string]: T[];\n+ };\n+};\n+\n+export const mergeEntities = (state: any, entities: any, ref: Reference) => {\n+ const data = state[ref.path[1]] || {};\n+ const query = 'default';\n+ return { ...state, ...{\n+ [ref.path[1]]: {\n+ entities: {\n+ ...data.entities,\n+ ...entities\n+ },\n+ lists: {\n+ ...data.lists,\n+ ...{\n+ [query]: Object.keys(entities).reduce((acc, id, index) => {\n+ acc[(ref.query.offset || 0) + index] = id;\n+ return acc;\n+ }, data.lists ? ([...data.lists[query]] || []) : [])\n+ }\n+ }\n+ }\n+ }};\n+};\n+\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ threadsUnreadCount: threadUnreadCountReducer,\n+ messages: messageReducer,\n+});\n"}]},{"id":"9271813","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/root.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface RootModel {\n+ threads: {\n+ [userId: string]: Thread;\n+ },\n+ threadsUnreadCount: {\n+ [userId: string]: ThreadUnreadCount\n+ },\n+ messages: {\n+ [threadId: string]: Message;\n+ }\n+};\n"}]},{"id":"9271812","metadata":[],"oldPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","currentPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271811","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Message } from '.\/message.model';\n+\n+export const messageReducer = (\n+ state: Readonly<{ [threadId: string]: Entities<Message> }> = {},\n+ action: Action\n+): Readonly<{ [threadId: string]: Entities<Message> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'messages') {\n+ console.log('messageReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS': {\n+ const { data, ref } = action.payload;\n+ const messages = data.messages.reduce((acc: any, message: any) => {\n+ acc[message.id] = message;\n+ return acc;\n+ }, {});\n+ return mergeEntities(state, messages, ref);\n+ }\n+\n+ case 'API_POST': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ case 'API_POST_SUCCESS': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ \/*case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9271810","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n"}]},{"id":"9271809","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9271808","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"45","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"45","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Reference, Action } from '.\/store';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+import { backend } from '.\/backend';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private ref$: any,\n+ private apiHttp: ApiHttp,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.ref$, this.apiHttp, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ push(body: Object): Observable<boolean> {\n+ console.log('push', body);\n+ return this.ref$.take(1)\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ return Observable.of((<any>backend)[path[0]].post(path[1]))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST',\n+ payload: { data, ref }\n+ }))\n+ .switchMap((config) => this.apiHttp.post(config, body))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST_SUCCESS',\n+ payload: { data, ref }\n+ }))\n+ })\n+ .mapTo(true)\n+ }\n+\n+}\n"}]},{"id":"9271807","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/languages-domains\/languages-domains.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface LanguagesDomains {\n+\n+\n+}\n+\n+{\"status\":\"success\",\"data\":{\"languages\":[{\"id\":\"4\",\"code\":\"af\",\"name\":\"Afrikaans\",\"englishName\":\"Afrikaans\",\"iso6391\":\"af\",\"iso6392\":\"afr\",\"active\":true},{\"id\":\"19\",\"code\":\"bn\",\"name\":\"\\u09ac\\u09be\\u0982\\u09b2\\u09be\",\"englishName\":\"Bengali\",\"iso6391\":\"bn\",\"iso6392\":\"ben\",\"active\":true},{\"id\":\"23\",\"code\":\"ca\",\"name\":\"Catal\\u00e0\",\"englishName\":\"Catalan\",\"iso6391\":\"ca\",\"iso6392\":\"cat\",\"active\":true},{\"id\":\"28\",\"code\":\"cs\",\"name\":\"\\u010ce\\u0161tina\",\"englishName\":\"Czech\",\"iso6391\":\"cs\",\"iso6392\":\"ces\",\"active\":true},{\"id\":\"32\",\"code\":\"da\",\"name\":\"Dansk\",\"englishName\":\"Danish\",\"iso6391\":\"da\",\"iso6392\":\"dan\",\"active\":true},{\"id\":\"33\",\"code\":\"de\",\"name\":\"Deutsch\",\"englishName\":\"German\",\"iso6391\":\"de\",\"iso6392\":\"deu\",\"active\":true},{\"id\":\"37\",\"code\":\"el\",\"name\":\"\\u03b5\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac\",\"englishName\":\"Greek, Modern\",\"iso6391\":\"el\",\"iso6392\":\"ell\",\"active\":true},{\"id\":\"38\",\"code\":\"en\",\"name\":\"English\",\"englishName\":\"English\",\"iso6391\":\"en\",\"iso6392\":\"eng\",\"active\":true},{\"id\":\"40\",\"code\":\"es\",\"name\":\"Espa\\u00f1ol\",\"englishName\":\"Spanish\",\"iso6391\":\"es\",\"iso6392\":\"spa\",\"active\":true},{\"id\":\"45\",\"code\":\"fi\",\"name\":\"Suomi\",\"englishName\":\"Finnish\",\"iso6391\":\"fi\",\"iso6392\":\"fin\",\"active\":true},{\"id\":\"46\",\"code\":\"fil\",\"name\":\"Filipino\",\"englishName\":\"Filipino\",\"iso6391\":\"\",\"iso6392\":\"fil\",\"active\":true},{\"id\":\"49\",\"code\":\"fr\",\"name\":\"Fran\\u00e7ais\",\"englishName\":\"French\",\"iso6391\":\"fr\",\"iso6392\":\"fra\",\"active\":true},{\"id\":\"60\",\"code\":\"hi\",\"name\":\"\\u0939\\u093f\\u0928\\u094d\\u0926\\u0940\",\"englishName\":\"Hindi\",\"iso6391\":\"hi\",\"iso6392\":\"hin\",\"active\":true},{\"id\":\"64\",\"code\":\"hu\",\"name\":\"Magyar\",\"englishName\":\"Hungarian\",\"iso6391\":\"hu\",\"iso6392\":\"hun\",\"active\":true},{\"id\":\"68\",\"code\":\"id\",\"name\":\"Bahasa Indonesia\",\"englishName\":\"Indonesian\",\"iso6391\":\"id\",\"iso6392\":\"ind\",\"active\":true},{\"id\":\"75\",\"code\":\"it\",\"name\":\"Italiano\",\"englishName\":\"Italian\",\"iso6391\":\"it\",\"iso6392\":\"ita\",\"active\":true},{\"id\":\"77\",\"code\":\"ja\",\"name\":\"\\u65e5\\u672c\\u8a9e\",\"englishName\":\"Japanese\",\"iso6391\":\"ja\",\"iso6392\":\"jpn\",\"active\":true},{\"id\":\"87\",\"code\":\"ko\",\"name\":\"\\ud55c\\uad6d\\uc5b4\",\"englishName\":\"Korean\",\"iso6391\":\"ko\",\"iso6392\":\"kor\",\"active\":true},{\"id\":\"109\",\"code\":\"ms\",\"name\":\"Bahasa Malaysia\",\"englishName\":\"Malay\",\"iso6391\":\"ms\",\"iso6392\":\"msa\",\"active\":true},{\"id\":\"113\",\"code\":\"nb\",\"name\":\"Norsk-Bokm\\u00e5l\",\"englishName\":\"Norwegian Bokm\\u00e5l\",\"iso6391\":\"nb\",\"iso6392\":\"nob\",\"active\":true},{\"id\":\"118\",\"code\":\"nl\",\"name\":\"Nederlands\",\"englishName\":\"Dutch\",\"iso6391\":\"nl\",\"iso6392\":\"nld\",\"active\":true},{\"id\":\"132\",\"code\":\"pl\",\"name\":\"Polski\",\"englishName\":\"Polish\",\"iso6391\":\"pl\",\"iso6392\":\"pol\",\"active\":true},{\"id\":\"134\",\"code\":\"pt\",\"name\":\"Portugu\\u00eas\",\"englishName\":\"Portuguese\",\"iso6391\":\"pt\",\"iso6392\":\"por\",\"active\":true},{\"id\":\"138\",\"code\":\"ro\",\"name\":\"Rom\\u00e2n\\u0103\",\"englishName\":\"Romanian\",\"iso6391\":\"ro\",\"iso6392\":\"ron\",\"active\":true},{\"id\":\"139\",\"code\":\"ru\",\"name\":\"\\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439\",\"englishName\":\"Russian\",\"iso6391\":\"ru\",\"iso6392\":\"rus\",\"active\":true},{\"id\":\"148\",\"code\":\"sl\",\"name\":\"Sloven\\u0161\\u010dina\",\"englishName\":\"Slovenian\",\"iso6391\":\"sl\",\"iso6392\":\"slv\",\"active\":true},{\"id\":\"152\",\"code\":\"sq\",\"name\":\"Shqip\",\"englishName\":\"Albanian\",\"iso6391\":\"sq\",\"iso6392\":\"sqi\",\"active\":true},{\"id\":\"157\",\"code\":\"sv\",\"name\":\"Svenska\",\"englishName\":\"Swedish\",\"iso6391\":\"sv\",\"iso6392\":\"swe\",\"active\":true},{\"id\":\"158\",\"code\":\"sw\",\"name\":\"Kiswahili\",\"englishName\":\"Swahili\",\"iso6391\":\"sw\",\"iso6392\":\"swa\",\"active\":true},{\"id\":\"163\",\"code\":\"th\",\"name\":\"\\u0e20\\u0e32\\u0e29\\u0e32\\u0e44\\u0e17\\u0e22\",\"englishName\":\"Thai\",\"iso6391\":\"th\",\"iso6392\":\"tha\",\"active\":true},{\"id\":\"171\",\"code\":\"tr\",\"name\":\"T\\u00fcrk\\u00e7e\",\"englishName\":\"Turkish\",\"iso6391\":\"tr\",\"iso6392\":\"tur\",\"active\":true},{\"id\":\"178\",\"code\":\"uk\",\"name\":\"\\u0423\\u043a\\u0440\\u0430\\u0457\\u043d\\u0441\\u044c\\u043a\\u0430\",\"englishName\":\"Ukrainian\",\"iso6391\":\"uk\",\"iso6392\":\"ukr\",\"active\":true},{\"id\":\"182\",\"code\":\"vi\",\"name\":\"Ti\\u1ebfng Vi\\u1ec7t\",\"englishName\":\"Vietnamese\",\"iso6391\":\"vi\",\"iso6392\":\"vie\",\"active\":true},{\"id\":\"190\",\"code\":\"zh\",\"name\":\"\\u4e2d\\u6587(\\u7b80\\u4f53)\",\"englishName\":\"Chinese\",\"iso6391\":\"zh\",\"iso6392\":\"zho\",\"active\":true}],\"domains\":[{\"name\":\"North America\",\"domains\":[{\"id\":\"1\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\",\"pattern\":\"\\\/freelancer.com$\\\/\",\"name\":\"US (International)\",\"info\":\"Go to global site\",\"info_selected\":\"Stay in US\",\"flag_small\":\"us.png\",\"flag_big\":\"us-big.png\",\"sequence\":\"200\",\"short_name\":\"usa\",\"domain_switcher_region_name\":\"North America\",\"current\":true},{\"id\":\"9\",\"domain_name\":\"freelancer.ca\",\"url\":\"https:\\\/\\\/www.freelancer.ca\",\"pattern\":\"\\\/freelancer.ca$\\\/\",\"name\":\"Canada\",\"info\":\"Go to CA site\",\"info_selected\":\"Stay in CA\",\"flag_small\":\"ca.png\",\"flag_big\":\"ca-big.png\",\"sequence\":\"210\",\"short_name\":\"canada\",\"domain_switcher_region_name\":\"North America\"},{\"id\":\"13\",\"domain_name\":\"freelancer.com.jm\",\"url\":\"https:\\\/\\\/www.freelancer.com.jm\",\"pattern\":\"\\\/freelancer.com.jm$\\\/\",\"name\":\"Jamaica\",\"info\":\"Go to JM site\",\"info_selected\":\"Stay in JM\",\"flag_small\":\"jm.png\",\"flag_big\":\"jm-big.png\",\"sequence\":\"220\",\"short_name\":\"jamaica\",\"domain_switcher_region_name\":\"North America\"}]},{\"name\":\"Africa\",\"domains\":[{\"id\":\"11\",\"domain_name\":\"freelancer.co.za\",\"url\":\"https:\\\/\\\/www.freelancer.co.za\",\"pattern\":\"\\\/freelancer.co.za$\\\/\",\"name\":\"South Africa\",\"info\":\"Go to ZA site\",\"info_selected\":\"Stay in ZA\",\"flag_small\":\"za.png\",\"flag_big\":\"za-big.png\",\"sequence\":\"500\",\"short_name\":\"south-africa\",\"domain_switcher_region_name\":\"Africa\"},{\"id\":\"55\",\"domain_name\":\"freelancer.co.ke\",\"url\":\"https:\\\/\\\/www.freelancer.co.ke\",\"pattern\":\"\\\/freelancer.co.ke$\\\/\",\"name\":\"Kenya\",\"info\":\"Go to KE site\",\"info_selected\":\"Stay in KE\",\"flag_small\":\"ke.png\",\"flag_big\":\"ke-big.png\",\"sequence\":\"510\",\"short_name\":\"kenya\",\"domain_switcher_region_name\":\"Africa\"}]},{\"name\":\"Europe\",\"domains\":[{\"id\":\"4\",\"domain_name\":\"freelancer.co.uk\",\"url\":\"https:\\\/\\\/www.freelancer.co.uk\",\"pattern\":\"\\\/freelancer.co.uk$\\\/\",\"name\":\"United Kingdom\",\"info\":\"Go to UK site\",\"info_selected\":\"Stay in UK\",\"flag_small\":\"uk.png\",\"flag_big\":\"uk-big.png\",\"sequence\":\"600\",\"short_name\":\"uk\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"10\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/eu\\\/welcome.php\",\"pattern\":\"\\\/freelancer.eu$\\\/\",\"name\":\"European Union\",\"info\":\"Go to EU site\",\"info_selected\":\"Stay in EU\",\"flag_small\":\"eu.png\",\"flag_big\":\"eu-big.png\",\"sequence\":\"610\",\"short_name\":\"europe-union\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"22\",\"domain_name\":\"fr.freelancer.com\",\"url\":\"https:\\\/\\\/www.fr.freelancer.com\",\"pattern\":\"\\\/fr.freelancer.com$\\\/\",\"name\":\"France\",\"info\":\"Go to FR site\",\"info_selected\":\"Stay in FR\",\"flag_small\":\"fr.png\",\"flag_big\":\"fr-big.png\",\"sequence\":\"620\",\"short_name\":\"france\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"8\",\"domain_name\":\"freelancer.de\",\"url\":\"https:\\\/\\\/www.freelancer.de\",\"pattern\":\"\\\/freelancer.de$\\\/\",\"name\":\"Germany\",\"info\":\"Go to DE site\",\"info_selected\":\"Stay in DE\",\"flag_small\":\"de.png\",\"flag_big\":\"de-big.png\",\"sequence\":\"630\",\"short_name\":\"germany\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"42\",\"domain_name\":\"freelancer.gr\",\"url\":\"https:\\\/\\\/www.freelancer.gr\",\"pattern\":\"\\\/freelancer.gr$\\\/\",\"name\":\"Greece\",\"info\":\"Go to GR site\",\"info_selected\":\"Stay in GR\",\"flag_small\":\"gr.png\",\"flag_big\":\"gr-big.png\",\"sequence\":\"640\",\"short_name\":\"greece\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"35\",\"domain_name\":\"freelancer.pt\",\"url\":\"https:\\\/\\\/www.freelancer.pt\",\"pattern\":\"\\\/freelancer.pt$\\\/\",\"name\":\"Portugal\",\"info\":\"Go to PT site\",\"info_selected\":\"Stay in PT\",\"flag_small\":\"pt.png\",\"flag_big\":\"pt-big.png\",\"sequence\":\"650\",\"short_name\":\"portugal\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"14\",\"domain_name\":\"freelancer.es\",\"url\":\"https:\\\/\\\/www.freelancer.es\",\"pattern\":\"\\\/freelancer.es$\\\/\",\"name\":\"Spain\",\"info\":\"Go to ES site\",\"info_selected\":\"Stay in ES\",\"flag_small\":\"es.png\",\"flag_big\":\"es-big.png\",\"sequence\":\"660\",\"short_name\":\"spain\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"45\",\"domain_name\":\"freelancer.cz\",\"url\":\"https:\\\/\\\/www.freelancer.cz\",\"pattern\":\"\\\/freelancer.cz$\\\/\",\"name\":\"Czech Republic\",\"info\":\"Go to CZ site\",\"info_selected\":\"Stay in CZ\",\"flag_small\":\"cz.png\",\"flag_big\":\"cz-big.png\",\"sequence\":\"665\",\"short_name\":\"czech-republic\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"33\",\"domain_name\":\"freelancer.se\",\"url\":\"https:\\\/\\\/www.freelancer.se\",\"pattern\":\"\\\/freelancer.se$\\\/\",\"name\":\"Sweden\",\"info\":\"Go to SV site\",\"info_selected\":\"Stay in SV\",\"flag_small\":\"sv.png\",\"flag_big\":\"sv-big.png\",\"sequence\":\"670\",\"short_name\":\"sweden\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"43\",\"domain_name\":\"freelancer.is\",\"url\":\"https:\\\/\\\/www.freelancer.is\",\"pattern\":\"\\\/freelancer.is$\\\/\",\"name\":\"Iceland\",\"info\":\"Go to IS site\",\"info_selected\":\"Stay in IS\",\"flag_small\":\"is.png\",\"flag_big\":\"is-big.png\",\"sequence\":\"680\",\"short_name\":\"iceland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"50\",\"domain_name\":\"freelancer.ie\",\"url\":\"https:\\\/\\\/www.freelancer.ie\",\"pattern\":\"\\\/freelancer.ie$\\\/\",\"name\":\"Ireland\",\"info\":\"Go to IE site\",\"info_selected\":\"Stay in IE\",\"flag_small\":\"ie.png\",\"flag_big\":\"ie-big.png\",\"sequence\":\"685\",\"short_name\":\"ireland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"26\",\"domain_name\":\"freelancer.co.it\",\"url\":\"https:\\\/\\\/www.freelancer.co.it\",\"pattern\":\"\\\/freelancer.co.it$\\\/\",\"name\":\"Italy\",\"info\":\"Go to IT site\",\"info_selected\":\"Stay in IT\",\"flag_small\":\"it.png\",\"flag_big\":\"it-big.png\",\"sequence\":\"690\",\"short_name\":\"italy\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"27\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/changeLanguage.php?lang=nl\",\"pattern\":\"\\\/freelancer.co.nl$\\\/\",\"name\":\"Netherlands\",\"info\":\"Go to NL site\",\"info_selected\":\"Stay in NL\",\"flag_small\":\"nl.png\",\"flag_big\":\"nl-big.png\",\"sequence\":\"700\",\"short_name\":\"netherlands\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"28\",\"domain_name\":\"tr.freelancer.com\",\"url\":\"https:\\\/\\\/www.tr.freelancer.com\",\"pattern\":\"\\\/tr.freelancer.com$\\\/\",\"name\":\"Turkey\",\"info\":\"Go to TR site\",\"info_selected\":\"Stay in TR\",\"flag_small\":\"tr.png\",\"flag_big\":\"tr-big.png\",\"sequence\":\"710\",\"short_name\":\"turkey\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"36\",\"domain_name\":\"freelancer.pl\",\"url\":\"https:\\\/\\\/www.freelancer.pl\",\"pattern\":\"\\\/freelancer.pl$\\\/\",\"name\":\"Poland\",\"info\":\"Go to PL site\",\"info_selected\":\"Stay in PL\",\"flag_small\":\"pl.png\",\"flag_big\":\"pl-big.png\",\"sequence\":\"720\",\"short_name\":\"poland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"39\",\"domain_name\":\"freelancer.co.ro\",\"url\":\"https:\\\/\\\/www.freelancer.co.ro\",\"pattern\":\"\\\/freelancer.co.ro$\\\/\",\"name\":\"Romania\",\"info\":\"Go to RO site\",\"info_selected\":\"Stay in RO\",\"flag_small\":\"ro.png\",\"flag_big\":\"ro-big.png\",\"sequence\":\"730\",\"short_name\":\"romania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"40\",\"domain_name\":\"freelancer.com.ru\",\"url\":\"https:\\\/\\\/www.freelancer.com.ru\",\"pattern\":\"\\\/freelancer.com.ru$\\\/\",\"name\":\"Russia\",\"info\":\"Go to RU site\",\"info_selected\":\"Stay in RU\",\"flag_small\":\"ru.png\",\"flag_big\":\"ru-big.png\",\"sequence\":\"740\",\"short_name\":\"russia\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"47\",\"domain_name\":\"freelancer.com.ua\",\"url\":\"https:\\\/\\\/www.freelancer.com.ua\",\"pattern\":\"\\\/freelancer.com.ua$\\\/\",\"name\":\"Ukraine\",\"info\":\"Go to UA site\",\"info_selected\":\"Stay in UA\",\"flag_small\":\"ua.png\",\"flag_big\":\"ua-big.png\",\"sequence\":\"1090\",\"short_name\":\"ukraine\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"48\",\"domain_name\":\"freelancer.no\",\"url\":\"https:\\\/\\\/www.freelancer.no\",\"pattern\":\"\\\/freelancer.no$\\\/\",\"name\":\"Norway\",\"info\":\"Go to NO site\",\"info_selected\":\"Stay in NO\",\"flag_small\":\"no.png\",\"flag_big\":\"no-big.png\",\"sequence\":\"1100\",\"short_name\":\"norway\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"57\",\"domain_name\":\"freelancer.hu\",\"url\":\"https:\\\/\\\/www.freelancer.hu\",\"pattern\":\"\\\/freelancer.hu$\\\/\",\"name\":\"Hungary\",\"info\":\"Go to HU site\",\"info_selected\":\"Stay in HU\",\"flag_small\":\"hu.png\",\"flag_big\":\"hu-big.png\",\"sequence\":\"1110\",\"short_name\":\"hungary\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"52\",\"domain_name\":\"fi.freelancer.com\",\"url\":\"https:\\\/\\\/www.fi.freelancer.com\",\"pattern\":\"\\\/fi.freelancer.com$\\\/\",\"name\":\"Finland\",\"info\":\"Go to FI site\",\"info_selected\":\"Stay in FI\",\"flag_small\":\"fi.png\",\"flag_big\":\"fi-big.png\",\"sequence\":\"1120\",\"short_name\":\"finland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"53\",\"domain_name\":\"dk.freelancer.com\",\"url\":\"https:\\\/\\\/www.dk.freelancer.com\",\"pattern\":\"\\\/dk.freelancer.com$\\\/\",\"name\":\"Denmark\",\"info\":\"Go to DK site\",\"info_selected\":\"Stay in DK\",\"flag_small\":\"dk.png\",\"flag_big\":\"dk-big.png\",\"sequence\":\"1130\",\"short_name\":\"denmark\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"56\",\"domain_name\":\"freelancer.com.al\",\"url\":\"https:\\\/\\\/www.freelancer.com.al\",\"pattern\":\"\\\/freelancer.com.al$\\\/\",\"name\":\"Albania\",\"info\":\"Go to AL site\",\"info_selected\":\"Stay in AL\",\"flag_small\":\"al.png\",\"flag_big\":\"al-big.png\",\"sequence\":\"1140\",\"short_name\":\"albania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"51\",\"domain_name\":\"freelancer.si\",\"url\":\"https:\\\/\\\/www.freelancer.si\",\"pattern\":\"\\\/freelancer.si$\\\/\",\"name\":\"Slovenia\",\"info\":\"Go to SI site\",\"info_selected\":\"Stay in SI\",\"flag_small\":\"si.png\",\"flag_big\":\"si-big.png\",\"sequence\":\"1150\",\"short_name\":\"slovenia\",\"domain_switcher_region_name\":\"Europe\"}]},{\"name\":\"Asia Pacific\",\"domains\":[{\"id\":\"3\",\"domain_name\":\"freelancer.com.au\",\"url\":\"https:\\\/\\\/www.freelancer.com.au\",\"pattern\":\"\\\/freelancer.com.au$\\\/\",\"name\":\"Australia\",\"info\":\"Go to Australia site\",\"info_selected\":\"Stay in Australia\",\"flag_small\":\"au.png\",\"flag_big\":\"au-big.png\",\"sequence\":\"800\",\"short_name\":\"australia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"2\",\"domain_name\":\"freelancer.co.nz\",\"url\":\"https:\\\/\\\/www.freelancer.co.nz\",\"pattern\":\"\\\/freelancer.co.nz$\\\/\",\"name\":\"New Zealand\",\"info\":\"Go to New Zealand site\",\"info_selected\":\"Stay in New Zealand\",\"flag_small\":\"nz.png\",\"flag_big\":\"nz-big.png\",\"sequence\":\"810\",\"short_name\":\"new-zealand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"5\",\"domain_name\":\"freelancer.hk\",\"url\":\"https:\\\/\\\/www.freelancer.hk\",\"pattern\":\"\\\/freelancer.hk$\\\/\",\"name\":\"Hong Kong\",\"info\":\"Go to HK site\",\"info_selected\":\"Stay in HK\",\"flag_small\":\"hk.png\",\"flag_big\":\"hk-big.png\",\"sequence\":\"820\",\"short_name\":\"hong-kong\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"29\",\"domain_name\":\"freelancer.com.bd\",\"url\":\"https:\\\/\\\/www.freelancer.com.bd\",\"pattern\":\"\\\/freelancer.com.bd$\\\/\",\"name\":\"Bangladesh\",\"info\":\"Go to BD site\",\"info_selected\":\"Stay in BD\",\"flag_small\":\"bd.png\",\"flag_big\":\"bd-big.png\",\"sequence\":\"830\",\"short_name\":\"bangladesh\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"12\",\"domain_name\":\"freelancer.in\",\"url\":\"https:\\\/\\\/www.freelancer.in\",\"pattern\":\"\\\/freelancer.in$\\\/\",\"name\":\"India\",\"info\":\"Go to IN site\",\"info_selected\":\"Stay in IN\",\"flag_small\":\"in.png\",\"flag_big\":\"in-big.png\",\"sequence\":\"840\",\"short_name\":\"india\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"24\",\"domain_name\":\"freelancer.co.id\",\"url\":\"https:\\\/\\\/www.freelancer.co.id\",\"pattern\":\"\\\/freelancer.co.id$\\\/\",\"name\":\"Indonesia\",\"info\":\"Go to ID site\",\"info_selected\":\"Stay in ID\",\"flag_small\":\"id.png\",\"flag_big\":\"id-big.png\",\"sequence\":\"850\",\"short_name\":\"indo\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"41\",\"domain_name\":\"freelancer.jp\",\"url\":\"https:\\\/\\\/www.freelancer.jp\",\"pattern\":\"\\\/freelancer.jp$\\\/\",\"name\":\"Japan\",\"info\":\"Go to JP site\",\"info_selected\":\"Stay in JP\",\"flag_small\":\"jp.png\",\"flag_big\":\"jp-big.png\",\"sequence\":\"860\",\"short_name\":\"japan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"49\",\"domain_name\":\"freelancer.co.kr\",\"url\":\"https:\\\/\\\/www.freelancer.co.kr\",\"pattern\":\"\\\/freelancer.co.kr$\\\/\",\"name\":\"Korea, Republic of\",\"info\":\"Go to KR site\",\"info_selected\":\"Stay in KR\",\"flag_small\":\"kr.png\",\"flag_big\":\"kr-big.png\",\"sequence\":\"865\",\"short_name\":\"korea-republic-of\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"30\",\"domain_name\":\"my.freelancer.com\",\"url\":\"https:\\\/\\\/www.my.freelancer.com\",\"pattern\":\"\\\/my.freelancer.com$\\\/\",\"name\":\"Malaysia\",\"info\":\"Go to MS site\",\"info_selected\":\"Stay in MS\",\"flag_small\":\"ms.png\",\"flag_big\":\"ms-big.png\",\"sequence\":\"870\",\"short_name\":\"malaysia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"20\",\"domain_name\":\"freelancer.pk\",\"url\":\"https:\\\/\\\/www.freelancer.pk\",\"pattern\":\"\\\/freelancer.pk$\\\/\",\"name\":\"Pakistan\",\"info\":\"Go to PK site\",\"info_selected\":\"Stay in PK\",\"flag_small\":\"pk.png\",\"flag_big\":\"pk-big.png\",\"sequence\":\"880\",\"short_name\":\"pakistan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"7\",\"domain_name\":\"freelancer.ph\",\"url\":\"https:\\\/\\\/www.freelancer.ph\",\"pattern\":\"\\\/freelancer.ph$\\\/\",\"name\":\"Philippines\",\"info\":\"Go to PH site\",\"info_selected\":\"Stay in PH\",\"flag_small\":\"ph.png\",\"flag_big\":\"ph-big.png\",\"sequence\":\"890\",\"short_name\":\"philippines\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"38\",\"domain_name\":\"freelancer.cn\",\"url\":\"https:\\\/\\\/www.freelancer.cn\",\"pattern\":\"\\\/freelancer.cn$\\\/\",\"name\":\"P.R. China\",\"info\":\"Go to ZH site\",\"info_selected\":\"Stay in ZH\",\"flag_small\":\"zh.png\",\"flag_big\":\"zh-big.png\",\"sequence\":\"900\",\"short_name\":\"china\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"6\",\"domain_name\":\"freelancer.sg\",\"url\":\"https:\\\/\\\/www.freelancer.sg\",\"pattern\":\"\\\/freelancer.sg$\\\/\",\"name\":\"Singapore\",\"info\":\"Go to SG site\",\"info_selected\":\"Stay in SG\",\"flag_small\":\"sg.png\",\"flag_big\":\"sg-big.png\",\"sequence\":\"910\",\"short_name\":\"singapore\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"44\",\"domain_name\":\"freelancer.co.th\",\"url\":\"https:\\\/\\\/www.freelancer.co.th\",\"pattern\":\"\\\/freelancer.co.th$\\\/\",\"name\":\"Thailand\",\"info\":\"Go to TH site\",\"info_selected\":\"Stay in TH\",\"flag_small\":\"th.png\",\"flag_big\":\"th-big.png\",\"sequence\":\"940\",\"short_name\":\"thailand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"54\",\"domain_name\":\"vn.freelancer.com\",\"url\":\"https:\\\/\\\/www.vn.freelancer.com\",\"pattern\":\"\\\/vn.freelancer.com$\\\/\",\"name\":\"Vietnam\",\"info\":\"Go to VN site\",\"info_selected\":\"Stay in VN\",\"flag_small\":\"vn.png\",\"flag_big\":\"vn-big.png\",\"sequence\":\"950\",\"short_name\":\"vietnam\",\"domain_switcher_region_name\":\"Asia Pacific\"}]},{\"name\":\"Latin America\",\"domains\":[{\"id\":\"18\",\"domain_name\":\"freelancer.com.ar\",\"url\":\"https:\\\/\\\/www.freelancer.com.ar\",\"pattern\":\"\\\/freelancer.com.ar$\\\/\",\"name\":\"Argentina\",\"info\":\"Go to AR site\",\"info_selected\":\"Stay in AR\",\"flag_small\":\"ar.png\",\"flag_big\":\"ar-big.png\",\"sequence\":\"1000\",\"short_name\":\"argentina\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"25\",\"domain_name\":\"br.freelancer.com\",\"url\":\"https:\\\/\\\/www.br.freelancer.com\",\"pattern\":\"\\\/br.freelancer.com$\\\/\",\"name\":\"Brazil\",\"info\":\"Go to BR site\",\"info_selected\":\"Stay in BR\",\"flag_small\":\"br.png\",\"flag_big\":\"br-big.png\",\"sequence\":\"1010\",\"short_name\":\"brazil\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"46\",\"domain_name\":\"freelancer.cl\",\"url\":\"https:\\\/\\\/www.freelancer.cl\",\"pattern\":\"\\\/freelancer.cl$\\\/\",\"name\":\"Chile\",\"info\":\"Go to CL site\",\"info_selected\":\"Stay in CL\",\"flag_small\":\"cl.png\",\"flag_big\":\"cl-big.png\",\"sequence\":\"1020\",\"short_name\":\"chile\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"37\",\"domain_name\":\"freelancer.com.co\",\"url\":\"https:\\\/\\\/www.freelancer.com.co\",\"pattern\":\"\\\/freelancer.com.co$\\\/\",\"name\":\"Colombia\",\"info\":\"Go to CO site\",\"info_selected\":\"Stay in CO\",\"flag_small\":\"co.png\",\"flag_big\":\"co-big.png\",\"sequence\":\"1030\",\"short_name\":\"colombia\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"17\",\"domain_name\":\"freelancer.ec\",\"url\":\"https:\\\/\\\/www.freelancer.ec\",\"pattern\":\"\\\/freelancer.ec$\\\/\",\"name\":\"Ecuador\",\"info\":\"Go to EC site\",\"info_selected\":\"Stay in EC\",\"flag_small\":\"ec.png\",\"flag_big\":\"ec-big.png\",\"sequence\":\"1040\",\"short_name\":\"ecuador\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"15\",\"domain_name\":\"freelancer.mx\",\"url\":\"https:\\\/\\\/www.freelancer.mx\",\"pattern\":\"\\\/freelancer.mx$\\\/\",\"name\":\"Mexico\",\"info\":\"Go to MX site\",\"info_selected\":\"Stay in MX\",\"flag_small\":\"mx.png\",\"flag_big\":\"mx-big.png\",\"sequence\":\"1050\",\"short_name\":\"mexico\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"16\",\"domain_name\":\"freelancer.com.pe\",\"url\":\"https:\\\/\\\/www.freelancer.com.pe\",\"pattern\":\"\\\/freelancer.com.pe$\\\/\",\"name\":\"Peru\",\"info\":\"Go to PE site\",\"info_selected\":\"Stay in PE\",\"flag_small\":\"pe.png\",\"flag_big\":\"pe-big.png\",\"sequence\":\"1070\",\"short_name\":\"peru\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"31\",\"domain_name\":\"freelancer.uy\",\"url\":\"https:\\\/\\\/www.freelancer.uy\",\"pattern\":\"\\\/freelancer.uy$\\\/\",\"name\":\"Uruguay\",\"info\":\"Go to UY site\",\"info_selected\":\"Stay in UY\",\"flag_small\":\"uy.png\",\"flag_big\":\"uy-big.png\",\"sequence\":\"1080\",\"short_name\":\"uruguay\",\"domain_swit:cher_region_name\":\"Latin America\"}]}]}}\n"}]},{"id":"9271806","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9271805","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"95","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"95","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Reference, Path, Query, Action } from '.\/store'\n+import { backend } from '.\/backend';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+export interface ListOptions {\n+ query: QueryObservable;\n+}\n+\n+export interface QueryObservable {\n+ limit?: number|Observable<number>;\n+ offset?: number|Observable<number>;\n+}\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<RootModel>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {}\n+\n+ list<a extends keyof RootModel, b extends keyof RootModel[a]>(\n+ key1: a,\n+ key2: b|Observable<b>,\n+ options?: ListOptions\n+ ): ListObservable<Array<RootModel[a][b]>> {\n+\n+ const pathStream = Observable.combineLatest([\n+ (key1 instanceof Observable) ? key1 : Observable.of(key1),\n+ (key2 instanceof Observable) ? key2 : Observable.of(key2)\n+ ]);\n+\n+ const query = options ? options.query : {};\n+ const queryStream = Observable.combineLatest([\n+ (query.limit instanceof Observable) ? query.limit : Observable.of(query.limit),\n+ (query.offset instanceof Observable) ? query.offset : Observable.of(query.offset)\n+ ], (limit: number, offset: number) => ({ limit, offset }));\n+\n+ const refStream = Observable.combineLatest(\n+ [pathStream, queryStream],\n+ (path: Path, query: Query): Reference => ({path, query})\n+ )\n+ .multicast(() => new ReplaySubject(1))\n+ .refCount();\n+\n+ const fetchStream = refStream\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ if (backend[path[0]] && backend[path[0]].fetch) {\n+ return Observable.of((<any>backend)[path[0]].fetch(path[1], query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => {\n+ this.store.dispatch(<Action>{\n+ type: 'API_FETCH_SUCCESS',\n+ payload: { data, ref }\n+ })\n+ })\n+ .mapTo({path, query});\n+ } else {\n+ return Observable.empty();\n+ }\n+ });\n+\n+ \/\/ TODO: WebSocket -> liveStream\n+\n+ return new ListObservable(refStream, this.apiHttp, this.store,\n+ Observable.merge(refStream, fetchStream)\n+ .switchMap(({path, query}: any) =>\n+ this.store.pluck(...path)\n+ )\n+ .distinctUntilChanged()\n+ .map((data: any) => {\n+ if (data && data.lists) {\n+ \t\t\t\t\treturn (<any>data).lists['default']\n+ \t\t\t\t\t .slice(query.offset || 0)\n+ \t\t\t\t\t .map((id: any) => (<any>data).entities[<string>id]);\n+ } else {\n+ return [];\n+ }\n+ })\n+ );\n+\n+ }\n+\n+ \/\/ TODO: object() => new ObjectObservable()\n+\n+}\n"}]},{"id":"9271804","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5,\n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9271803","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9271802","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/backend.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Backend {\n+ fetch?: (key: string, query: any) => {\n+ endpoint: string;\n+ params: {\n+ [key: string]: string|number;\n+ };\n+ },\n+ post?: (key: string) => {\n+ endpoint: string;\n+ }\n+};\n+\n+export const backend: { [k: string]: Backend } = {\n+ threads: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/threads`,\n+ params: {\n+ unread_count: 'true',\n+ last_message: 'true',\n+ message_details: 'true',\n+ context_details: 'true',\n+ user_details: 'true',\n+ limit: query.limit\n+ }\n+ })\n+ },\n+ messages: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/messages`,\n+ params: {\n+ 'threads[]': key,\n+ }\n+ }),\n+ post: (key) => ({\n+ endpoint: `messages\/0.1\/threads\/${key}\/messages\/`,\n+ params: {\n+ thread_id: key\n+ }\n+ })\n+ }\n+};\n"}]},{"id":"9271801","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.params)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ post(config: any, payload: Object): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.post(`${this.config.apiBaseUrl}\/${config.endpoint}`,\n+ this.serialize({ ...payload, ...config.params }), {\n+ headers: authHeader,\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid , token}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${uid};${token}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ const params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ params.set('compact', 'true');\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9271800","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9271799","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n"}]},{"id":"9271798","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9271797","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9271796","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ uid: number;\n+ token: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const uid = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10);\n+ const token = this.cookies.get(this.authConfig.authHashCookie);\n+ this.next({ uid, token });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9271795","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n"}]},{"id":"9271794","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9271793","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-ozfpqplzlcw5iglsx23y"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271792","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9271791","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888 -ssl\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.1\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9271790","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9271789","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9271788","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9271787","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9271786","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+This project was generated with [Angular CLI](https:\/\/github.com\/angular\/angular-cli) version 1.0.0-rc.0.\n+\n+## Development server\n+Run `ng serve` for a dev server. Navigate to `http:\/\/localhost:4200\/`. The app will automatically reload if you change any of the source files.\n+\n+## Code scaffolding\n+\n+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive\/pipe\/service\/class\/module`.\n+\n+## Build\n+\n+Run `ng build` to build the project. The build artifacts will be stored in the `dist\/` directory. Use the `-prod` flag for a production build.\n+\n+## Running unit tests\n+\n+Run `ng test` to execute the unit tests via [Karma](https:\/\/karma-runner.github.io).\n+\n+## Running end-to-end tests\n+\n+Run `ng e2e` to execute the end-to-end tests via [Protractor](http:\/\/www.protractortest.org\/).\n+Before running the tests make sure you are serving the app via `ng serve`.\n+\n+## Further help\n+\n+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https:\/\/github.com\/angular\/angular-cli\/blob\/master\/README.md).\n"}]},{"id":"9271785","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6\n"}]},{"id":"9271784","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9271783","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9271782","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9271781","metadata":{"line:first":722},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"945","newLength":"946","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?mobile=true permanent;\n rewrite ^\/semm\/$ https:\/\/$host\/find\/?mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/activate.php \/local\/activate.php last;\n rewrite ^\/local\/onSignup.php \/local\/onSignup.php last;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n"}]},{"id":"9271780","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9271779","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9271778","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9271777","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271776","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9271775","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9271774","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9271773","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9271772","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { RouterModule, Routes } from '@angular\/router';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n-\n-const messagingInboxRoutes: Routes = [\n- {\n- path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forChild(messagingInboxRoutes),\n- ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class MessagingInboxRoutingModule { }\n"}]},{"id":"9271771","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9271770","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9271769","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9271768","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9271767","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9271766","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9271765","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9271764","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9271763","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9271762","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9271761","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9271760","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9271759","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9271758","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"40","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"40","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n-import { Thread, ThreadService } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-list',\n- template: `\n- <div *ngFor=\"let thread of threads;\">\n- - - - - - - - - - - - - - - - - - - - - - -\n- <thread-item [thread]=\"thread\"\n- openThread=\"onOpenThread($event)\">\n- <\/thread-item>\n- - - - - - - - - - - - - - - - - - - - - - -\n- <\/div>\n- `,\n-})\n-export class ThreadListComponent implements OnInit {\n- @Output() openThread = new EventEmitter<Thread>();\n-\n- threads: Thread[];\n-\n- constructor(private threadService: ThreadService) {}\n-\n- getThreads() {\n- this.threads = [{\n- people: ['Laurent', 'Andrew', 'Geoff'],\n- }, {\n- people: ['Steven', 'Diego'],\n- }];\n- \/\/ this.threadService.getThreads()\n- \/\/ .subscribe(threads => this.threads = threads);\n- }\n-\n- ngOnInit() {\n- this.getThreads();\n- }\n-\n- onOpenThread($event: Thread) {\n- this.openThread.emit($event);\n- }\n-}\n"}]},{"id":"9271757","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9271756","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9271755","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9271754","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9271753","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9271752","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9271751","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9271750","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9271749","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9271748","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9271747","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"371","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9271746","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"3","delLines":"48","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1208","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"^2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n \"eslint-nibble\": \"~3.1.0\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-touch.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n- \"npm:@angular\/common@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/compiler@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/core@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/forms@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/http@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/platform-browser@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/router@3.2.4\": {\n- \"main\": \"index.js\"\n- },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9271745","metadata":{"line:first":16},"oldPath":".arclint","currentPath":".arclint","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"292","newLength":"293","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"exclude\": [\n \"(^public\/lib\/thrift\/packages\/)\",\n \"(^public\/static\/.*\/bower_components\/)\",\n \"(^public\/static\/css\/critical-css\/)\",\n \"(^public\/static\/@styles)\",\n \"(^support\/flarc\/.*\\\\.lint-test$)\"\n ],\n \"linters\": {\n \"chmod\": {\n \"type\": \"chmod\"\n },\n \"filename\": {\n \"type\": \"filename\",\n \"exclude\": [\n- \"(^public\/static\/modules\/)\"\n+ \"(^public\/static\/modules\/)\",\n+ \"(^webapp\/)\"\n ]\n },\n \"generated\": {\n \"type\": \"generated\"\n },\n \"javascript\": {\n \"type\": \"jshint\",\n \"include\": \"(\\\\.js$)\",\n \"exclude\": [\n \"(^public\/static\/angularjs\/)\",\n \"(^public\/static\/modules\/)\",\n \"(^public\/tests\/js\/app_tests\/)\",\n \"(^scripts\/build-assets\/.*\\\\.js$)\",\n \"(\\\\.min\\\\.js$)\"\n ],\n \"jshint.jshintignore\": \"support\/lint\/jshintignore\",\n \"jshint.jshintrc\": \"support\/lint\/default.jshintrc\"\n },\n \"javascript-angularjs\": {\n \"type\": \"jshint\",\n \"include\": [\n \"(^public\/static\/angularjs\/.*\\\\.js$)\"\n ],\n \"jshint.jshintrc\": \"support\/lint\/angularjs.jshintrc\"\n },\n \"javascript-modules\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^public\/static\/modules\/.*\\\\.js$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"public\/static\/modules\/.eslintrc\"\n },\n \"typescript-modules\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^public\/static\/modules\/.*\\\\.ts$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"public\/static\/modules\/.eslintrc_ts\"\n },\n \"javascript-node\": {\n \"type\": \"eslint\",\n \"include\": [\n \"(^scripts\/build-assets\/.*\\\\.js$)\"\n ],\n \"exclude\": [\n \"(^scripts\/build-assets\/legacy\/.*\\\\.js$)\",\n \"(^scripts\/build-assets\/Gruntfile.js$)\"\n ],\n \"bin\": \"node_modules\/.bin\/eslint\",\n \"eslint.config\": \"scripts\/build-assets\/.eslintrc\"\n },\n \"javascript-node-legacy\": {\n \"type\": \"jshint\",\n \"include\": [\n \"(^scripts\/build-assets\/legacy\/.*\\\\.js$)\",\n \"(^scripts\/build-assets\/Gruntfile.js$)\"\n ],\n \"jshint.jshintrc\": \"support\/lint\/node.jshintrc\"\n },\n \"json\": {\n \"type\": \"json\",\n \"include\": [\n \"(^\\\\.arcconfig$)\",\n \"(^\\\\.arclint$)\",\n \"(\\\\.babelrc$)\",\n \"(\\\\.book$)\",\n \"(\\\\.eslintrc$)\",\n \"(\\\\.jshintrc$)\",\n \"(\\\\.stylelintrc$)\",\n \"(\\\\.json$)\"\n ]\n },\n \"less\": {\n \"type\": \"lessc\",\n \"include\": \"(\\\\.less$)\",\n \"flags\": [\n \"--include-path=public\/static\/css\"\n ]\n },\n \"merge-conflict\": {\n \"type\": \"merge-conflict\"\n },\n \"nolint\": {\n \"type\": \"nolint\"\n },\n \"php\": {\n \"type\": \"xhpast\",\n \"include\": \"(\\\\.php$)\",\n \"exclude\": [\n \"(^src\/)\",\n \"(^test\/)\",\n \"(^support\/flarc\/.*\\\\.php$)\"\n ],\n \"severity\": {\n \"5\": \"warning\",\n \"9\": \"disabled\",\n \"19\": \"disabled\",\n \"57\": \"disabled\"\n },\n \"xhpast.blacklisted.function\": {\n \"__halt_compiler\": \"The `__halt_compiler` function should not be used.\",\n \"class_alias\": \"The `class_alias` function should be avoided. It makes debugging more difficult.\",\n \"create_function\": \"The `create_function` function is essentially equivalent to `eval`. You should use anonymous functions instead.\",\n \"dl\": \"The `dl` function should not be used to load a PHP extension.\",\n \"eval\": \"The `eval` function should be avoided. It is potentially unsafe and makes debugging more difficult.\",\n \"get_magic_quotes_gpc\": \"This function always returns `false` in PHP version greater than or equal to 5.4.0.\",\n \"get_magic_quotes_runtime\": \"This function always returns `false` in PHP version greater than or equal to 5.4.0.\",\n \"phpcredits\": \"The `phpcredits` function should not be used.\",\n \"phpinfo\": \"The `phpinfo` function should not be used.\"\n },\n \"xhpast.deprecated.class\": {\n \"Encryption\": \"The `Encryption` class doesn't properly encrypt data.\",\n \"FasterLoginHandler\": \"Use the `InstantLoginHandler` class instead.\",\n \"FastLoginHandler\": \"Use the `InstantLoginHandler` class instead.\",\n \"FloatRegister\": true,\n \"FloatTimeRegister\": true,\n \"FreelancerToken\": true,\n \"HashUtil\": true,\n \"IntRegister\": true,\n \"IntTimeRegister\": true,\n \"NumberRegister\": true,\n \"NumberTimeRegister\": true,\n \"Register\": true,\n \"S3\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Aws\\\\S3Client` class instead.\"\n },\n \"xhpast.deprecated.functions\": {\n \"adapt_page\": \"\",\n \"append_uri_tracing_comment\": \"Use the `DB` class instead.\",\n \"array_columns\": \"\",\n \"array_columns_to_key_values\": \"\",\n \"array_flatten_kvstore\": \"\",\n \"array_for_enduser\": \"\",\n \"arrayGet\": \"Use `idx` instead.\",\n \"arrayIndexByKey\": \"\",\n \"arrayPath\": \"\",\n \"arrayPluck\": \"\",\n \"array_to_idarray\": \"\",\n \"array_values_to_keys\": \"\",\n \"check_allowed_domains\": \"\",\n \"check_email\": \"\",\n \"check_form_token\": \"\",\n \"check_id\": \"\",\n \"check_sortdir\": \"\",\n \"check_url\": \"\",\n \"closeNotificationDBConnection\": \"Use the `DB` class instead.\",\n \"compare_float\": \"\",\n \"connectToNotificationDB\": \"Use the `DB` class instead.\",\n \"connectToSlaveDB\": \"Use the `DB` class instead.\",\n \"createRegisterObject\": \"\",\n \"csrfprotectionhandler::isvalidrequest\": \"Consider using CSRFProtectionHandler::blockRequest instead.\",\n \"DB::insertMaster\": \"Consider using the `DB::queryMaster` method instead.\",\n \"DB::updateMaster\": \"Consider using the `DB::queryMaster` method instead.\",\n \"decrypt_cookie\": \"\",\n \"dumpTrace\": \"\",\n \"encrypt_cookie\": \"\",\n \"error_log\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"exec_func\": \"\",\n \"execsql\": \"Use the `DB` class instead.\",\n \"generate_form_token\": \"\",\n \"get_affected_row\": \"Use the `DB` class instead.\",\n \"getCurrentDBConnection\": \"Use the `DB` class instead.\",\n \"getDebugPrintBacktrace\": \"Use the `DB` class instead.\",\n \"getHelpItem\": \"\",\n \"getHelpItemLink\": \"\",\n \"get_insert_id\": \"Use the `DB` class instead.\",\n \"get_limits\": \"\",\n \"get_limits_array\": \"\",\n \"get_page_link_str\": \"\",\n \"get_page_link_vars\": \"\",\n \"get_pages_link_str\": \"\",\n \"get_pages_link_vars\": \"\",\n \"getRegister\": \"\",\n \"get_register_value\": \"\",\n \"get_sql_result\": \"Use the `DB` class instead.\",\n \"helplink\": \"\",\n \"inc_register\": \"\",\n \"insert_on_master\": \"Use the `DB` class instead.\",\n \"insert\": \"Use the `DB` class instead.\",\n \"is_valid_goto_url\": \"\",\n \"localise_email\": \"Use the `MailHandler::getEmailReceiverData` method instead.\",\n \"logDbError\": \"Use the `DB` class instead.\",\n \"log_exception\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::warning` method instead.\",\n \"log_notice\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::notice` method instead.\",\n \"log_warning\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::warning` method instead.\",\n \"merge_any_arrays\": \"\",\n \"mysql_array_to_set\": \"Use the `DB` class instead.\",\n \"prepare_amount\": \"\",\n \"prepare_check\": \"\",\n \"prepare_country\": \"\",\n \"prepare_currency\": \"\",\n \"prepare_double\": \"\",\n \"prepare_email\": \"\",\n \"prepare_fax\": \"\",\n \"prepare_filename\": \"\",\n \"prepare_int\": \"\",\n \"prepare_phone\": \"\",\n \"prepare_sql_datetime\": \"\",\n \"prepare_string\": \"\",\n \"prepare_time\": \"\",\n \"query_arrays_on_slave\": \"Use the `DB` class instead.\",\n \"query_arrays\": \"Use the `DB` class instead.\",\n \"query_arrays_without_unslash\": \"Use the `DB` class instead.\",\n \"query_count_on_slave\": \"Use the `DB` class instead.\",\n \"query_count\": \"Use the `DB` class instead.\",\n \"query_one_array_on_slave\": \"Use the `DB` class instead.\",\n \"query_one_array\": \"Use the `DB` class instead.\",\n \"query_only\": \"Use the `DB` class instead.\",\n \"redirect301\": \"\",\n \"restoreDBConnection\": \"Use the `DB` class instead.\",\n \"restoreMasterConnection\": \"Use the `DB` class instead.\",\n \"round_money\": \"\",\n \"select_arrays_on_slave\": \"Use the `DB` class instead.\",\n \"select_arrays\": \"Use the `DB` class instead.\",\n \"select_one_array\": \"Use the `DB` class instead.\",\n \"select_only\": \"Use the `DB` class instead.\",\n \"set_register\": \"\",\n \"trigger_error\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"update_on_master\": \"Use the `DB` class instead.\",\n \"update\": \"Use the `DB` class instead.\",\n \"urlsafe_64decode\": \"\",\n \"urlsafe_64encode\": \"\",\n \"user_error\": \"Use the `\\\\Freelancer\\\\GAF\\\\Core\\\\Log\\\\Logger::info` method instead.\",\n \"usingSlave\": \"Use the `DB` class instead.\"\n },\n \"xhpast.php-version\": \"5.4.45\"\n },\n \"php-strict\": {\n \"type\": \"xhpast\",\n \"include\": [\n \"(^src\/.*\\\\.php$)\",\n \"(^test\/.*\\\\.php$)\"\n ],\n \"xhpast.php-version\": \"5.4.45\"\n },\n \"spelling\": {\n \"type\": \"spelling\"\n },\n \"stylelint\": {\n \"type\": \"stylelint\",\n \"include\": \"(^public\/static\/css\/flux\/(modules|layout)\/.*\\\\.less$)\",\n \"bin\": \"node_modules\/.bin\/stylelint\",\n \"stylelint.config\": \"public\/static\/css\/.stylelintrc\"\n },\n \"text\": {\n \"type\": \"text\",\n \"exclude\": [\n \"(^public\/.*\\\\.html?$)\",\n \"(\\\\.svg$)\",\n \"(^scripts\/build-assets\/build.js$)\"\n ],\n \"severity\": {\n \"4\": \"autofix\"\n },\n \"text.max-line-length\": 150\n },\n \"xml\": {\n \"type\": \"xml\",\n \"include\": [\n \"(\\\\.svg$)\",\n \"(\\\\.(xml|xsl)$)\"\n ]\n },\n \n \"phutil-library\": {\n \"type\": \"phutil-library\",\n \"include\": \"(^support\/flarc\/.*\\\\.php$)\"\n },\n \"phutil-php\": {\n \"type\": \"xhpast\",\n \"include\": \"(^support\/flarc\/.*\\\\.php$)\",\n \"xhpast.php-version\": \"5.3\"\n }\n }\n }\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"1ddb857de346293e87ce856b45a3924b3092606f":{"commit":"1ddb857de346293e87ce856b45a3924b3092606f","tree":"8c70af9eeee6a7457179f31372e236a460f78d84","parents":["2fffeeb3cf709d5015bc15808b2d3ca61b944d2e"],"time":"1488991262","author":"Laurent Goudet","summary":"more cleanup","message":"more cleanup","authorEmail":"laurent@freelancer.com"},"2fffeeb3cf709d5015bc15808b2d3ca61b944d2e":{"commit":"2fffeeb3cf709d5015bc15808b2d3ca61b944d2e","tree":"c6d40d09d21b19034620ce6aa3f12d5acb98c933","parents":["2a467dc6590b787ebbab072ea11be0d4ee62956b"],"time":"1488990967","author":"Laurent Goudet","summary":"cleanup","message":"cleanup","authorEmail":"laurent@freelancer.com"},"2a467dc6590b787ebbab072ea11be0d4ee62956b":{"commit":"2a467dc6590b787ebbab072ea11be0d4ee62956b","tree":"498a3e87259e5c1c160463f1077774900b220322","parents":["131f7a148dcfbcadbd3df6d177b7882b006f73f0"],"time":"1488990658","author":"Laurent Goudet","summary":"pluck pluck plucking","message":"pluck pluck plucking","authorEmail":"laurent@freelancer.com"},"131f7a148dcfbcadbd3df6d177b7882b006f73f0":{"commit":"131f7a148dcfbcadbd3df6d177b7882b006f73f0","tree":"4f17b76b5c288f0726738cb8dbe8b91c00286237","parents":["79b6461eb65a7d3a9dd7a5120496b34aed731aea"],"time":"1488990284","author":"Laurent Goudet","summary":"more improvements","message":"more improvements","authorEmail":"laurent@freelancer.com"},"79b6461eb65a7d3a9dd7a5120496b34aed731aea":{"commit":"79b6461eb65a7d3a9dd7a5120496b34aed731aea","tree":"35b936db1e49a3aa6e0486031a1d70bb98fc16fc","parents":["a3f34334da468fa18fce95cfdd6d07057d1c3e88"],"time":"1488986050","author":"Laurent Goudet","summary":"Update cli to rc1","message":"Update cli to rc1","authorEmail":"laurent@freelancer.com"},"a3f34334da468fa18fce95cfdd6d07057d1c3e88":{"commit":"a3f34334da468fa18fce95cfdd6d07057d1c3e88","tree":"41cd820055f91b119d9c8a797bdbd83791eca5f0","parents":["2b096f05e8550a621882e4da5e8d3b1a5f3ddae4"],"time":"1488985757","author":"Laurent Goudet","summary":"Finish renaming","message":"Finish renaming","authorEmail":"laurent@freelancer.com"},"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4":{"commit":"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4","tree":"579fb8566e194b3d80a6543b304c56ffc9263a7a","parents":["203a6aa47f50467ad46e556442f65d2c5aa574c6"],"time":"1488984749","author":"Laurent Goudet","summary":"more renaming","message":"more renaming","authorEmail":"laurent@freelancer.com"},"203a6aa47f50467ad46e556442f65d2c5aa574c6":{"commit":"203a6aa47f50467ad46e556442f65d2c5aa574c6","tree":"3bb4fc3a032bebb279f521ab7fb269f6aba8c600","parents":["99562cd0ca1d33a5132cb132bfb5a79f46c1a057"],"time":"1488978328","author":"Laurent Goudet","summary":"it works","message":"it works","authorEmail":"laurent@freelancer.com"},"99562cd0ca1d33a5132cb132bfb5a79f46c1a057":{"commit":"99562cd0ca1d33a5132cb132bfb5a79f46c1a057","tree":"a90b746681e137aa40e21d6aa2e82be7022cb3d9","parents":["8c26bbd83a354887739377f4beb4a3e82e3905e2"],"time":"1488903326","author":"Laurent Goudet","summary":"bugz","message":"bugz","authorEmail":"laurent@freelancer.com"},"8c26bbd83a354887739377f4beb4a3e82e3905e2":{"commit":"8c26bbd83a354887739377f4beb4a3e82e3905e2","tree":"32398a01d49efebce64b2f14d55cfdf0babc5dc5","parents":["fca85f7440b205d1b05d860cae596e72cae65150"],"time":"1488902573","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"fca85f7440b205d1b05d860cae596e72cae65150":{"commit":"fca85f7440b205d1b05d860cae596e72cae65150","tree":"0b44b65f63fe3bd3a590632ccb4681afd1de402c","parents":["4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c"],"time":"1488819407","author":"Laurent Goudet","summary":"Bugz fixing","message":"Bugz fixing","authorEmail":"laurent@freelancer.com"},"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c":{"commit":"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c","tree":"e86302ebe2ecb73a3e4893f93119efd6f1ea458c","parents":["c3815d83d0278276714c527df4b976ff2c29aa19"],"time":"1488818884","author":"Laurent Goudet","summary":"Dynamic queries handling","message":"Dynamic queries handling","authorEmail":"laurent@freelancer.com"},"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"700397":{"id":"700397","revisionID":"56417","dateCreated":"1488991060","dateModified":"1488991062","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - cleanup","unitStatus":"1","lintStatus":"3","changes":[{"id":"9271744","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5280","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5280","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n"}]},{"id":"9271743","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271742","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9271741","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9271740","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.key","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN RSA PRIVATE KEY-----\n+MIICWwIBAAKBgQCmipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LV\n+g\/kgt79am1bnF+\/HF880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R\n+1uHyD\/46sYtMejy3n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQAB\n+AoGATqG34hCSf11mWDUPNXjuCcz8eLF8Ugab\/pMngrPR2OWOSKue4y73jmITYBVd\n+96iOlqMAOxpmfFp\/R81PIHdi++Bax1NfSBT8tK0U7HHzkbHEXyvHiBSug78Y14h8\n+Y\/NMZXEvVapY7lapr5ZgOSf2rcKOlceMRsoohl6bGc+55BECQQDPZTw5WxDDe7\/W\n+oYzHy7abLw+A92cP8A6qlwXBik9ko6jtYXvoI454OIr6RsHoFPU9bUkx5G1fvOUZ\n+J3sxfxMZAkEAzZJEwcvmxHizX\/2NZZ8LvVyWGpao07bBcAEvDXDZFOZqKUujukOe\n+iilQD6JZDJTmW9RJmOgdQKeL9ZaTlX3MqwJASMJrbnPUXcB8fQAQM8f0OF06QzSI\n+o77EZnS1QEEVuWjxStZ4ceiHgwXTPBq2zIUNxI8irq5E8OGEPl7riWHbgQJARzqL\n+QGsaRrFb1cLRH4kAVFikWgoh7VnBpMGEQC\/9x9QerLhcvsl3QYAXEZO7LzTYrLDd\n+33Ft0V08jZfjA0VXiQJAOwX6glfDKf79AK1sifFQc\/v0Yu87LIOAwp0zLlsnO0Q9\n+xQV3TdjlNQebfTG+Uw1tmbcCb2wcGFfD199IHpAzIA==\n+-----END RSA PRIVATE KEY-----\n"}]},{"id":"9271739","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.crt","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN CERTIFICATE-----\n+MIICAzCCAWwCCQDlm49KXF45gzANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJB\n+VTETMBEGA1UECBMKU29tZS1TdGF0ZTEQMA4GA1UEChMHR3J1bnRKUzEQMA4GA1UE\n+AxMHMC4wLjAuMDAeFw0xNDAyMTkyMzE1NDRaFw0xNTAyMTkyMzE1NDRaMEYxCzAJ\n+BgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRAwDgYDVQQKEwdHcnVudEpT\n+MRAwDgYDVQQDEwcwLjAuMC4wMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm\n+ipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LVg\/kgt79am1bnF+\/H\n+F880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R1uHyD\/46sYtMejy3\n+n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQABMA0GCSqGSIb3DQEB\n+BQUAA4GBADnTBlN7+Aa8zj2zsUBSUv9w7iYut3ZDvrEY+IJt8EurwA6+Q7rQqVsY\n+an5ztiEESriWvqNIfvWb+Yekhv9sISJFMfApVbimmT6QseQcFEIlRNW5cfukHQVH\n+9dBI7upQO2vN7N9ABo4a3aBANMBxIvCnE+adiqNOTJF\/8qkiAFY9\n+-----END CERTIFICATE-----\n"}]},{"id":"9271738","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9271737","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9271736","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9271735","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9271734","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9271733","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271732","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9271731","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9271730","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-ucsp3xsmbnsfap4y7dit"},"oldPath":"webapp\/src\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271729","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const environment = {\n+ production: false,\n+ gafBaseUrl: 'https:\/\/laurent.syd1.fln-dev.net',\n+ authConfig: {\n+ baseUrl: `https:\/\/laurent.syd1.fln-dev.net\/auth`,\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/api`,\n+ ajaxBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/ajax`,\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n"}]},{"id":"9271728","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271727","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9271726","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271725","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+import 'rxjs\/add\/observable\/merge';\n+import 'rxjs\/add\/observable\/from';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/merge';\n+import 'rxjs\/add\/operator\/mergeMap';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/pluck';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n+import 'rxjs\/add\/operator\/multicast';\n+import 'rxjs\/add\/operator\/scan';\n+import 'rxjs\/add\/operator\/take';\n"}]},{"id":"9271724","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.assign(`${environment.gafBaseUrl}${state.url}`);\n+ return false;\n+ }\n+}\n"}]},{"id":"9271723","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"55","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"55","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ template: `\n+ <div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+\n+ <!-- <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>-->\n+ <\/div>\n+ `,\n+})\n+export class ThreadComponent {\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.messages = this.datastore.list(\n+ 'messages',\n+ this.route.params.map(({threadId}) => threadId), {\n+ query: {\n+ limit: 10\n+ }\n+ }\n+ );\n+ }\n+\n+ sendMessage(message: string) {\n+ this.auth.switchMap(({uid}) =>\n+ this.messages.push({\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ busy: true,\n+ from_user: uid.toString()\n+ })\n+ ).toPromise();\n+ }\n+}\n"}]},{"id":"9271722","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9271721","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9271720","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread.thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9271719","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9271718","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+\n+ <fl-user-avatar [src]=\"thread.owner.avatar\"\n+ class=\"avatar\">\n+ <\/fl-user-avatar>\n+ <div class=\"body\">\n+ <div class=\"body-content-username\"\n+ *ngFor=\"let member of thread.members; let $last = last;\">\n+ {{ member.username }}<span *ngIf=\"!$last\">,<\/span>\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{ thread.message.message }}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9271717","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"33","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9271716","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9271715","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9271714","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9271713","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9271712","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9271711","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9271710","metadata":{"line:first":1,"copy:lines":{"47":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"48":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"49":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"50":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"50","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"50","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ThreadComponent,\n+ EmptyThreadComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n"}]},{"id":"9271709","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"70","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"70","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Thread } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <router-outlet><\/router-outlet>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ \/\/threadsUnreadCount: ObjectObservable<ThreadUnreadCount>;\n+ threadsLimit = new Subject<number>();\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ const uid = this.auth.map(({uid}) => uid.toString());\n+ this.threads = this.datastore.list('threads', uid, {\n+ query: {\n+ limit: this.threadsLimit\n+ .startWith(10)\n+ .scan((acc, curr) => acc + curr)\n+ }\n+ }\n+ );\n+ \/\/this.threadsUnreadCount = this.datastore.list('threadsUnreadCount', uid);\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.next(count);\n+ }\n+\n+ createThread() {\n+ \/\/this.threads.push(...);\n+ }\n+\n+}\n"}]},{"id":"9271708","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9271707","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",3,"-"],"7":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",6,"-"],"8":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",7,"-"],"9":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",8,"-"],"10":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",9,"-"],"24":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",16,"-"],"25":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",17,"-"],"26":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",18,"-"],"27":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",19,"-"],"28":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",20,"-"],"29":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",21,"-"],"30":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",25,"-"],"31":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",26,"-"],"32":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",27,"-"],"33":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",28,"-"],"34":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",29,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { RouterModule, Routes } from '@angular\/router';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { AuthGuard } from '..\/auth-guard.service';\n+\n+const messagingInboxRoutes: Routes = [\n+ {\n+ path: '',\n+ canActivate: [AuthGuard],\n+ component: MessagingInboxComponent,\n+ children: [\n+ {\n+ path: '',\n+ component: EmptyThreadComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: ThreadComponent\n+ }\n+ ]\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forChild(messagingInboxRoutes),\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class MessagingInboxRoutingModule { }\n"}]},{"id":"9271706","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message of messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9271705","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9271704","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9271703","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9271702","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message = new EventEmitter<string>();\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9271701","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9271700","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9271699","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9271698","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/empty-thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: `\n+ <div>\n+ NO THREAD SELECTED\n+ <\/div>\n+ `,\n+})\n+export class EmptyThreadComponent {\n+\n+}\n"}]},{"id":"9271697","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9271696","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9271695","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9271694","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9271693","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.uid) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9271692","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9271691","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9271690","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9271689","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"35","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"35","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n"}]},{"id":"9271688","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9271687","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/user-avatar.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular\/core';\n+@Component({\n+ selector: 'fl-user-avatar',\n+ template: `\n+ <img [src]=\"avatarUrl\" \/>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class UserAvatarComponent implements OnChanges {\n+ private avatarUrl: string;\n+ @Input() src: string;\n+\n+ constructor() {}\n+\n+ ngOnChanges() {\n+ if (this.src) {\n+ this.avatarUrl = `https:\/\/laurent.syd1.fln-dev.net${this.src}`;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9271686","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271685","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n+import { UserAvatarComponent } from '.\/user-avatar.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9271684","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9271683","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9271682","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9271681","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+\n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+\n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+\n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+\n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+\n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+\n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver;\n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9271680","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9271679","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9271678","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9271677","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9271676","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9271675","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9271674","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9271673","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9271672","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use\n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+\n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9271671","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/verification-banner\/verificationBanner.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface VerificationBanners {\n+ [userId: string]: VerificationBanner\n+}\n+\n+export interface VerificationBanner {\n+ email: string;\n+ params: string; \/\/ \"id=15540180&key=8656f81647a32f8331bea7921d0cef14dc9929e8\"\n+ showPhoneVerifyBanner: boolean;\n+ show_resend_btn: boolean;\n+ type_of_notif: string; \/\/ \"email\"\n+ username: string; \/\/ \"laurent\"\n+}\n"}]},{"id":"9271670","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9271669","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Thread, ThreadUnreadCount } from '.\/thread.model';\n+\n+export const threadReducer = (\n+ state: Readonly<{ [userId: string]: Entities<Thread> }> = {},\n+ action: Action\n+): Readonly<{ [userId: string]: Entities<Thread> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ console.log('threadReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ Denoramlize the Thread API response\n+ const contextDetails = data.context_details;\n+ const users = data.users;\n+ const threads = data.threads.reduce((acc: any, thread: any) => {\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.project = contextDetails.projects[context.id];\n+ } else {\n+ context.contest = contextDetails.contests[context.id];\n+ }\n+ context.id = undefined;\n+ const members = thread.thread.members.map((memberId: number) => {\n+ return { ...users[memberId], ...{\n+ \/\/ Avatar CDN URLs returned by the API are crap\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ });\n+ const owner = { ...users[thread.thread.owner], ...{\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ const threadInner = { ...thread.thread, context, members, owner };\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ acc[thread.id] = { ...thread , ...{ thread: threadInner }, messages };\n+ return acc;\n+ }, {});\n+\n+ return mergeEntities(state, threads, ref);\n+\n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n+export const threadUnreadCountReducer =\n+ (state: Entities<ThreadUnreadCount> = {}, action: Action): Entities<ThreadUnreadCount> => {\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ return mergeEntities(state, data.unread_thread_count, ref);\n+ return state;\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9271668","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface ThreadUnreadCount {\n+ unread_thread_count: number;\n+}\n+\n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ type: 'project' | 'contest';\n+ contest?: any;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD\n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9271667","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"73","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"73","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+import { RootModel } from '.\/root.model';\n+\n+import { Thread, ThreadUnreadCount } from '.\/thread\/thread.model';\n+import { threadReducer, threadUnreadCountReducer } from '.\/thread\/thread.reducer';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+\n+import { Observable } from 'rxjs\/Observable';\n+\n+export interface Reference {\n+ path: Path;\n+ query: Query;\n+}\n+\n+export type Path = [keyof RootModel, string];\n+\n+export interface Query {\n+ limit?: number;\n+ offset?: number;\n+}\n+\n+export interface Action {\n+ type: ActionType;\n+ payload?: {\n+ data: any;\n+ ref: Reference;\n+ }\n+}\n+\n+export type ActionType = 'API_FETCH_SUCCESS'\n+ | 'API_POST'\n+ | 'API_POST_SUCCESS';\n+\n+export interface Entities<T> {\n+ entities?: {\n+ [id: string]: T;\n+ };\n+ lists?: {\n+ [query: string]: T[];\n+ };\n+};\n+\n+export const mergeEntities = (state: any, entities: any, ref: Reference) => {\n+ const data = state[ref.path[1]] || {};\n+ const query = 'default';\n+ return { ...state, ...{\n+ [ref.path[1]]: {\n+ entities: {\n+ ...data.entities,\n+ ...entities\n+ },\n+ lists: {\n+ ...data.lists,\n+ ...{\n+ [query]: Object.keys(entities).reduce((acc, id, index) => {\n+ acc[(ref.query.offset || 0) + index] = id;\n+ return acc;\n+ }, data.lists ? ([...data.lists[query]] || []) : [])\n+ }\n+ }\n+ }\n+ }};\n+};\n+\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ threadsUnreadCount: threadUnreadCountReducer,\n+ messages: messageReducer,\n+});\n"}]},{"id":"9271666","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/root.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface RootModel {\n+ threads: {\n+ [userId: string]: Thread;\n+ },\n+ threadsUnreadCount: {\n+ [userId: string]: ThreadUnreadCount\n+ },\n+ messages: {\n+ [threadId: string]: Message;\n+ }\n+};\n"}]},{"id":"9271665","metadata":[],"oldPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","currentPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271664","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Message } from '.\/message.model';\n+\n+export const messageReducer = (\n+ state: Readonly<{ [threadId: string]: Entities<Message> }> = {},\n+ action: Action\n+): Readonly<{ [threadId: string]: Entities<Message> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'messages') {\n+ console.log('messageReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS': {\n+ const { data, ref } = action.payload;\n+ const messages = data.messages.reduce((acc: any, message: any) => {\n+ acc[message.id] = message;\n+ return acc;\n+ }, {});\n+ return mergeEntities(state, messages, ref);\n+ }\n+\n+ case 'API_POST': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ case 'API_POST_SUCCESS': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ \/*case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9271663","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n"}]},{"id":"9271662","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9271661","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"45","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"45","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Reference, Action } from '.\/store';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+import { backend } from '.\/backend';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private ref$: any,\n+ private apiHttp: ApiHttp,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.ref$, this.apiHttp, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ push(body: Object): Observable<boolean> {\n+ console.log('push', body);\n+ return this.ref$.take(1)\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ return Observable.of((<any>backend)[path[0]].post(path[1]))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST',\n+ payload: { data, ref }\n+ }))\n+ .switchMap((config) => this.apiHttp.post(config, body))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST_SUCCESS',\n+ payload: { data, ref }\n+ }))\n+ })\n+ .mapTo(true)\n+ }\n+\n+}\n"}]},{"id":"9271660","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/languages-domains\/languages-domains.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface LanguagesDomains {\n+\n+\n+}\n+\n+{\"status\":\"success\",\"data\":{\"languages\":[{\"id\":\"4\",\"code\":\"af\",\"name\":\"Afrikaans\",\"englishName\":\"Afrikaans\",\"iso6391\":\"af\",\"iso6392\":\"afr\",\"active\":true},{\"id\":\"19\",\"code\":\"bn\",\"name\":\"\\u09ac\\u09be\\u0982\\u09b2\\u09be\",\"englishName\":\"Bengali\",\"iso6391\":\"bn\",\"iso6392\":\"ben\",\"active\":true},{\"id\":\"23\",\"code\":\"ca\",\"name\":\"Catal\\u00e0\",\"englishName\":\"Catalan\",\"iso6391\":\"ca\",\"iso6392\":\"cat\",\"active\":true},{\"id\":\"28\",\"code\":\"cs\",\"name\":\"\\u010ce\\u0161tina\",\"englishName\":\"Czech\",\"iso6391\":\"cs\",\"iso6392\":\"ces\",\"active\":true},{\"id\":\"32\",\"code\":\"da\",\"name\":\"Dansk\",\"englishName\":\"Danish\",\"iso6391\":\"da\",\"iso6392\":\"dan\",\"active\":true},{\"id\":\"33\",\"code\":\"de\",\"name\":\"Deutsch\",\"englishName\":\"German\",\"iso6391\":\"de\",\"iso6392\":\"deu\",\"active\":true},{\"id\":\"37\",\"code\":\"el\",\"name\":\"\\u03b5\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac\",\"englishName\":\"Greek, Modern\",\"iso6391\":\"el\",\"iso6392\":\"ell\",\"active\":true},{\"id\":\"38\",\"code\":\"en\",\"name\":\"English\",\"englishName\":\"English\",\"iso6391\":\"en\",\"iso6392\":\"eng\",\"active\":true},{\"id\":\"40\",\"code\":\"es\",\"name\":\"Espa\\u00f1ol\",\"englishName\":\"Spanish\",\"iso6391\":\"es\",\"iso6392\":\"spa\",\"active\":true},{\"id\":\"45\",\"code\":\"fi\",\"name\":\"Suomi\",\"englishName\":\"Finnish\",\"iso6391\":\"fi\",\"iso6392\":\"fin\",\"active\":true},{\"id\":\"46\",\"code\":\"fil\",\"name\":\"Filipino\",\"englishName\":\"Filipino\",\"iso6391\":\"\",\"iso6392\":\"fil\",\"active\":true},{\"id\":\"49\",\"code\":\"fr\",\"name\":\"Fran\\u00e7ais\",\"englishName\":\"French\",\"iso6391\":\"fr\",\"iso6392\":\"fra\",\"active\":true},{\"id\":\"60\",\"code\":\"hi\",\"name\":\"\\u0939\\u093f\\u0928\\u094d\\u0926\\u0940\",\"englishName\":\"Hindi\",\"iso6391\":\"hi\",\"iso6392\":\"hin\",\"active\":true},{\"id\":\"64\",\"code\":\"hu\",\"name\":\"Magyar\",\"englishName\":\"Hungarian\",\"iso6391\":\"hu\",\"iso6392\":\"hun\",\"active\":true},{\"id\":\"68\",\"code\":\"id\",\"name\":\"Bahasa Indonesia\",\"englishName\":\"Indonesian\",\"iso6391\":\"id\",\"iso6392\":\"ind\",\"active\":true},{\"id\":\"75\",\"code\":\"it\",\"name\":\"Italiano\",\"englishName\":\"Italian\",\"iso6391\":\"it\",\"iso6392\":\"ita\",\"active\":true},{\"id\":\"77\",\"code\":\"ja\",\"name\":\"\\u65e5\\u672c\\u8a9e\",\"englishName\":\"Japanese\",\"iso6391\":\"ja\",\"iso6392\":\"jpn\",\"active\":true},{\"id\":\"87\",\"code\":\"ko\",\"name\":\"\\ud55c\\uad6d\\uc5b4\",\"englishName\":\"Korean\",\"iso6391\":\"ko\",\"iso6392\":\"kor\",\"active\":true},{\"id\":\"109\",\"code\":\"ms\",\"name\":\"Bahasa Malaysia\",\"englishName\":\"Malay\",\"iso6391\":\"ms\",\"iso6392\":\"msa\",\"active\":true},{\"id\":\"113\",\"code\":\"nb\",\"name\":\"Norsk-Bokm\\u00e5l\",\"englishName\":\"Norwegian Bokm\\u00e5l\",\"iso6391\":\"nb\",\"iso6392\":\"nob\",\"active\":true},{\"id\":\"118\",\"code\":\"nl\",\"name\":\"Nederlands\",\"englishName\":\"Dutch\",\"iso6391\":\"nl\",\"iso6392\":\"nld\",\"active\":true},{\"id\":\"132\",\"code\":\"pl\",\"name\":\"Polski\",\"englishName\":\"Polish\",\"iso6391\":\"pl\",\"iso6392\":\"pol\",\"active\":true},{\"id\":\"134\",\"code\":\"pt\",\"name\":\"Portugu\\u00eas\",\"englishName\":\"Portuguese\",\"iso6391\":\"pt\",\"iso6392\":\"por\",\"active\":true},{\"id\":\"138\",\"code\":\"ro\",\"name\":\"Rom\\u00e2n\\u0103\",\"englishName\":\"Romanian\",\"iso6391\":\"ro\",\"iso6392\":\"ron\",\"active\":true},{\"id\":\"139\",\"code\":\"ru\",\"name\":\"\\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439\",\"englishName\":\"Russian\",\"iso6391\":\"ru\",\"iso6392\":\"rus\",\"active\":true},{\"id\":\"148\",\"code\":\"sl\",\"name\":\"Sloven\\u0161\\u010dina\",\"englishName\":\"Slovenian\",\"iso6391\":\"sl\",\"iso6392\":\"slv\",\"active\":true},{\"id\":\"152\",\"code\":\"sq\",\"name\":\"Shqip\",\"englishName\":\"Albanian\",\"iso6391\":\"sq\",\"iso6392\":\"sqi\",\"active\":true},{\"id\":\"157\",\"code\":\"sv\",\"name\":\"Svenska\",\"englishName\":\"Swedish\",\"iso6391\":\"sv\",\"iso6392\":\"swe\",\"active\":true},{\"id\":\"158\",\"code\":\"sw\",\"name\":\"Kiswahili\",\"englishName\":\"Swahili\",\"iso6391\":\"sw\",\"iso6392\":\"swa\",\"active\":true},{\"id\":\"163\",\"code\":\"th\",\"name\":\"\\u0e20\\u0e32\\u0e29\\u0e32\\u0e44\\u0e17\\u0e22\",\"englishName\":\"Thai\",\"iso6391\":\"th\",\"iso6392\":\"tha\",\"active\":true},{\"id\":\"171\",\"code\":\"tr\",\"name\":\"T\\u00fcrk\\u00e7e\",\"englishName\":\"Turkish\",\"iso6391\":\"tr\",\"iso6392\":\"tur\",\"active\":true},{\"id\":\"178\",\"code\":\"uk\",\"name\":\"\\u0423\\u043a\\u0440\\u0430\\u0457\\u043d\\u0441\\u044c\\u043a\\u0430\",\"englishName\":\"Ukrainian\",\"iso6391\":\"uk\",\"iso6392\":\"ukr\",\"active\":true},{\"id\":\"182\",\"code\":\"vi\",\"name\":\"Ti\\u1ebfng Vi\\u1ec7t\",\"englishName\":\"Vietnamese\",\"iso6391\":\"vi\",\"iso6392\":\"vie\",\"active\":true},{\"id\":\"190\",\"code\":\"zh\",\"name\":\"\\u4e2d\\u6587(\\u7b80\\u4f53)\",\"englishName\":\"Chinese\",\"iso6391\":\"zh\",\"iso6392\":\"zho\",\"active\":true}],\"domains\":[{\"name\":\"North America\",\"domains\":[{\"id\":\"1\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\",\"pattern\":\"\\\/freelancer.com$\\\/\",\"name\":\"US (International)\",\"info\":\"Go to global site\",\"info_selected\":\"Stay in US\",\"flag_small\":\"us.png\",\"flag_big\":\"us-big.png\",\"sequence\":\"200\",\"short_name\":\"usa\",\"domain_switcher_region_name\":\"North America\",\"current\":true},{\"id\":\"9\",\"domain_name\":\"freelancer.ca\",\"url\":\"https:\\\/\\\/www.freelancer.ca\",\"pattern\":\"\\\/freelancer.ca$\\\/\",\"name\":\"Canada\",\"info\":\"Go to CA site\",\"info_selected\":\"Stay in CA\",\"flag_small\":\"ca.png\",\"flag_big\":\"ca-big.png\",\"sequence\":\"210\",\"short_name\":\"canada\",\"domain_switcher_region_name\":\"North America\"},{\"id\":\"13\",\"domain_name\":\"freelancer.com.jm\",\"url\":\"https:\\\/\\\/www.freelancer.com.jm\",\"pattern\":\"\\\/freelancer.com.jm$\\\/\",\"name\":\"Jamaica\",\"info\":\"Go to JM site\",\"info_selected\":\"Stay in JM\",\"flag_small\":\"jm.png\",\"flag_big\":\"jm-big.png\",\"sequence\":\"220\",\"short_name\":\"jamaica\",\"domain_switcher_region_name\":\"North America\"}]},{\"name\":\"Africa\",\"domains\":[{\"id\":\"11\",\"domain_name\":\"freelancer.co.za\",\"url\":\"https:\\\/\\\/www.freelancer.co.za\",\"pattern\":\"\\\/freelancer.co.za$\\\/\",\"name\":\"South Africa\",\"info\":\"Go to ZA site\",\"info_selected\":\"Stay in ZA\",\"flag_small\":\"za.png\",\"flag_big\":\"za-big.png\",\"sequence\":\"500\",\"short_name\":\"south-africa\",\"domain_switcher_region_name\":\"Africa\"},{\"id\":\"55\",\"domain_name\":\"freelancer.co.ke\",\"url\":\"https:\\\/\\\/www.freelancer.co.ke\",\"pattern\":\"\\\/freelancer.co.ke$\\\/\",\"name\":\"Kenya\",\"info\":\"Go to KE site\",\"info_selected\":\"Stay in KE\",\"flag_small\":\"ke.png\",\"flag_big\":\"ke-big.png\",\"sequence\":\"510\",\"short_name\":\"kenya\",\"domain_switcher_region_name\":\"Africa\"}]},{\"name\":\"Europe\",\"domains\":[{\"id\":\"4\",\"domain_name\":\"freelancer.co.uk\",\"url\":\"https:\\\/\\\/www.freelancer.co.uk\",\"pattern\":\"\\\/freelancer.co.uk$\\\/\",\"name\":\"United Kingdom\",\"info\":\"Go to UK site\",\"info_selected\":\"Stay in UK\",\"flag_small\":\"uk.png\",\"flag_big\":\"uk-big.png\",\"sequence\":\"600\",\"short_name\":\"uk\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"10\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/eu\\\/welcome.php\",\"pattern\":\"\\\/freelancer.eu$\\\/\",\"name\":\"European Union\",\"info\":\"Go to EU site\",\"info_selected\":\"Stay in EU\",\"flag_small\":\"eu.png\",\"flag_big\":\"eu-big.png\",\"sequence\":\"610\",\"short_name\":\"europe-union\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"22\",\"domain_name\":\"fr.freelancer.com\",\"url\":\"https:\\\/\\\/www.fr.freelancer.com\",\"pattern\":\"\\\/fr.freelancer.com$\\\/\",\"name\":\"France\",\"info\":\"Go to FR site\",\"info_selected\":\"Stay in FR\",\"flag_small\":\"fr.png\",\"flag_big\":\"fr-big.png\",\"sequence\":\"620\",\"short_name\":\"france\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"8\",\"domain_name\":\"freelancer.de\",\"url\":\"https:\\\/\\\/www.freelancer.de\",\"pattern\":\"\\\/freelancer.de$\\\/\",\"name\":\"Germany\",\"info\":\"Go to DE site\",\"info_selected\":\"Stay in DE\",\"flag_small\":\"de.png\",\"flag_big\":\"de-big.png\",\"sequence\":\"630\",\"short_name\":\"germany\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"42\",\"domain_name\":\"freelancer.gr\",\"url\":\"https:\\\/\\\/www.freelancer.gr\",\"pattern\":\"\\\/freelancer.gr$\\\/\",\"name\":\"Greece\",\"info\":\"Go to GR site\",\"info_selected\":\"Stay in GR\",\"flag_small\":\"gr.png\",\"flag_big\":\"gr-big.png\",\"sequence\":\"640\",\"short_name\":\"greece\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"35\",\"domain_name\":\"freelancer.pt\",\"url\":\"https:\\\/\\\/www.freelancer.pt\",\"pattern\":\"\\\/freelancer.pt$\\\/\",\"name\":\"Portugal\",\"info\":\"Go to PT site\",\"info_selected\":\"Stay in PT\",\"flag_small\":\"pt.png\",\"flag_big\":\"pt-big.png\",\"sequence\":\"650\",\"short_name\":\"portugal\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"14\",\"domain_name\":\"freelancer.es\",\"url\":\"https:\\\/\\\/www.freelancer.es\",\"pattern\":\"\\\/freelancer.es$\\\/\",\"name\":\"Spain\",\"info\":\"Go to ES site\",\"info_selected\":\"Stay in ES\",\"flag_small\":\"es.png\",\"flag_big\":\"es-big.png\",\"sequence\":\"660\",\"short_name\":\"spain\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"45\",\"domain_name\":\"freelancer.cz\",\"url\":\"https:\\\/\\\/www.freelancer.cz\",\"pattern\":\"\\\/freelancer.cz$\\\/\",\"name\":\"Czech Republic\",\"info\":\"Go to CZ site\",\"info_selected\":\"Stay in CZ\",\"flag_small\":\"cz.png\",\"flag_big\":\"cz-big.png\",\"sequence\":\"665\",\"short_name\":\"czech-republic\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"33\",\"domain_name\":\"freelancer.se\",\"url\":\"https:\\\/\\\/www.freelancer.se\",\"pattern\":\"\\\/freelancer.se$\\\/\",\"name\":\"Sweden\",\"info\":\"Go to SV site\",\"info_selected\":\"Stay in SV\",\"flag_small\":\"sv.png\",\"flag_big\":\"sv-big.png\",\"sequence\":\"670\",\"short_name\":\"sweden\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"43\",\"domain_name\":\"freelancer.is\",\"url\":\"https:\\\/\\\/www.freelancer.is\",\"pattern\":\"\\\/freelancer.is$\\\/\",\"name\":\"Iceland\",\"info\":\"Go to IS site\",\"info_selected\":\"Stay in IS\",\"flag_small\":\"is.png\",\"flag_big\":\"is-big.png\",\"sequence\":\"680\",\"short_name\":\"iceland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"50\",\"domain_name\":\"freelancer.ie\",\"url\":\"https:\\\/\\\/www.freelancer.ie\",\"pattern\":\"\\\/freelancer.ie$\\\/\",\"name\":\"Ireland\",\"info\":\"Go to IE site\",\"info_selected\":\"Stay in IE\",\"flag_small\":\"ie.png\",\"flag_big\":\"ie-big.png\",\"sequence\":\"685\",\"short_name\":\"ireland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"26\",\"domain_name\":\"freelancer.co.it\",\"url\":\"https:\\\/\\\/www.freelancer.co.it\",\"pattern\":\"\\\/freelancer.co.it$\\\/\",\"name\":\"Italy\",\"info\":\"Go to IT site\",\"info_selected\":\"Stay in IT\",\"flag_small\":\"it.png\",\"flag_big\":\"it-big.png\",\"sequence\":\"690\",\"short_name\":\"italy\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"27\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/changeLanguage.php?lang=nl\",\"pattern\":\"\\\/freelancer.co.nl$\\\/\",\"name\":\"Netherlands\",\"info\":\"Go to NL site\",\"info_selected\":\"Stay in NL\",\"flag_small\":\"nl.png\",\"flag_big\":\"nl-big.png\",\"sequence\":\"700\",\"short_name\":\"netherlands\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"28\",\"domain_name\":\"tr.freelancer.com\",\"url\":\"https:\\\/\\\/www.tr.freelancer.com\",\"pattern\":\"\\\/tr.freelancer.com$\\\/\",\"name\":\"Turkey\",\"info\":\"Go to TR site\",\"info_selected\":\"Stay in TR\",\"flag_small\":\"tr.png\",\"flag_big\":\"tr-big.png\",\"sequence\":\"710\",\"short_name\":\"turkey\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"36\",\"domain_name\":\"freelancer.pl\",\"url\":\"https:\\\/\\\/www.freelancer.pl\",\"pattern\":\"\\\/freelancer.pl$\\\/\",\"name\":\"Poland\",\"info\":\"Go to PL site\",\"info_selected\":\"Stay in PL\",\"flag_small\":\"pl.png\",\"flag_big\":\"pl-big.png\",\"sequence\":\"720\",\"short_name\":\"poland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"39\",\"domain_name\":\"freelancer.co.ro\",\"url\":\"https:\\\/\\\/www.freelancer.co.ro\",\"pattern\":\"\\\/freelancer.co.ro$\\\/\",\"name\":\"Romania\",\"info\":\"Go to RO site\",\"info_selected\":\"Stay in RO\",\"flag_small\":\"ro.png\",\"flag_big\":\"ro-big.png\",\"sequence\":\"730\",\"short_name\":\"romania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"40\",\"domain_name\":\"freelancer.com.ru\",\"url\":\"https:\\\/\\\/www.freelancer.com.ru\",\"pattern\":\"\\\/freelancer.com.ru$\\\/\",\"name\":\"Russia\",\"info\":\"Go to RU site\",\"info_selected\":\"Stay in RU\",\"flag_small\":\"ru.png\",\"flag_big\":\"ru-big.png\",\"sequence\":\"740\",\"short_name\":\"russia\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"47\",\"domain_name\":\"freelancer.com.ua\",\"url\":\"https:\\\/\\\/www.freelancer.com.ua\",\"pattern\":\"\\\/freelancer.com.ua$\\\/\",\"name\":\"Ukraine\",\"info\":\"Go to UA site\",\"info_selected\":\"Stay in UA\",\"flag_small\":\"ua.png\",\"flag_big\":\"ua-big.png\",\"sequence\":\"1090\",\"short_name\":\"ukraine\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"48\",\"domain_name\":\"freelancer.no\",\"url\":\"https:\\\/\\\/www.freelancer.no\",\"pattern\":\"\\\/freelancer.no$\\\/\",\"name\":\"Norway\",\"info\":\"Go to NO site\",\"info_selected\":\"Stay in NO\",\"flag_small\":\"no.png\",\"flag_big\":\"no-big.png\",\"sequence\":\"1100\",\"short_name\":\"norway\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"57\",\"domain_name\":\"freelancer.hu\",\"url\":\"https:\\\/\\\/www.freelancer.hu\",\"pattern\":\"\\\/freelancer.hu$\\\/\",\"name\":\"Hungary\",\"info\":\"Go to HU site\",\"info_selected\":\"Stay in HU\",\"flag_small\":\"hu.png\",\"flag_big\":\"hu-big.png\",\"sequence\":\"1110\",\"short_name\":\"hungary\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"52\",\"domain_name\":\"fi.freelancer.com\",\"url\":\"https:\\\/\\\/www.fi.freelancer.com\",\"pattern\":\"\\\/fi.freelancer.com$\\\/\",\"name\":\"Finland\",\"info\":\"Go to FI site\",\"info_selected\":\"Stay in FI\",\"flag_small\":\"fi.png\",\"flag_big\":\"fi-big.png\",\"sequence\":\"1120\",\"short_name\":\"finland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"53\",\"domain_name\":\"dk.freelancer.com\",\"url\":\"https:\\\/\\\/www.dk.freelancer.com\",\"pattern\":\"\\\/dk.freelancer.com$\\\/\",\"name\":\"Denmark\",\"info\":\"Go to DK site\",\"info_selected\":\"Stay in DK\",\"flag_small\":\"dk.png\",\"flag_big\":\"dk-big.png\",\"sequence\":\"1130\",\"short_name\":\"denmark\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"56\",\"domain_name\":\"freelancer.com.al\",\"url\":\"https:\\\/\\\/www.freelancer.com.al\",\"pattern\":\"\\\/freelancer.com.al$\\\/\",\"name\":\"Albania\",\"info\":\"Go to AL site\",\"info_selected\":\"Stay in AL\",\"flag_small\":\"al.png\",\"flag_big\":\"al-big.png\",\"sequence\":\"1140\",\"short_name\":\"albania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"51\",\"domain_name\":\"freelancer.si\",\"url\":\"https:\\\/\\\/www.freelancer.si\",\"pattern\":\"\\\/freelancer.si$\\\/\",\"name\":\"Slovenia\",\"info\":\"Go to SI site\",\"info_selected\":\"Stay in SI\",\"flag_small\":\"si.png\",\"flag_big\":\"si-big.png\",\"sequence\":\"1150\",\"short_name\":\"slovenia\",\"domain_switcher_region_name\":\"Europe\"}]},{\"name\":\"Asia Pacific\",\"domains\":[{\"id\":\"3\",\"domain_name\":\"freelancer.com.au\",\"url\":\"https:\\\/\\\/www.freelancer.com.au\",\"pattern\":\"\\\/freelancer.com.au$\\\/\",\"name\":\"Australia\",\"info\":\"Go to Australia site\",\"info_selected\":\"Stay in Australia\",\"flag_small\":\"au.png\",\"flag_big\":\"au-big.png\",\"sequence\":\"800\",\"short_name\":\"australia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"2\",\"domain_name\":\"freelancer.co.nz\",\"url\":\"https:\\\/\\\/www.freelancer.co.nz\",\"pattern\":\"\\\/freelancer.co.nz$\\\/\",\"name\":\"New Zealand\",\"info\":\"Go to New Zealand site\",\"info_selected\":\"Stay in New Zealand\",\"flag_small\":\"nz.png\",\"flag_big\":\"nz-big.png\",\"sequence\":\"810\",\"short_name\":\"new-zealand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"5\",\"domain_name\":\"freelancer.hk\",\"url\":\"https:\\\/\\\/www.freelancer.hk\",\"pattern\":\"\\\/freelancer.hk$\\\/\",\"name\":\"Hong Kong\",\"info\":\"Go to HK site\",\"info_selected\":\"Stay in HK\",\"flag_small\":\"hk.png\",\"flag_big\":\"hk-big.png\",\"sequence\":\"820\",\"short_name\":\"hong-kong\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"29\",\"domain_name\":\"freelancer.com.bd\",\"url\":\"https:\\\/\\\/www.freelancer.com.bd\",\"pattern\":\"\\\/freelancer.com.bd$\\\/\",\"name\":\"Bangladesh\",\"info\":\"Go to BD site\",\"info_selected\":\"Stay in BD\",\"flag_small\":\"bd.png\",\"flag_big\":\"bd-big.png\",\"sequence\":\"830\",\"short_name\":\"bangladesh\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"12\",\"domain_name\":\"freelancer.in\",\"url\":\"https:\\\/\\\/www.freelancer.in\",\"pattern\":\"\\\/freelancer.in$\\\/\",\"name\":\"India\",\"info\":\"Go to IN site\",\"info_selected\":\"Stay in IN\",\"flag_small\":\"in.png\",\"flag_big\":\"in-big.png\",\"sequence\":\"840\",\"short_name\":\"india\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"24\",\"domain_name\":\"freelancer.co.id\",\"url\":\"https:\\\/\\\/www.freelancer.co.id\",\"pattern\":\"\\\/freelancer.co.id$\\\/\",\"name\":\"Indonesia\",\"info\":\"Go to ID site\",\"info_selected\":\"Stay in ID\",\"flag_small\":\"id.png\",\"flag_big\":\"id-big.png\",\"sequence\":\"850\",\"short_name\":\"indo\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"41\",\"domain_name\":\"freelancer.jp\",\"url\":\"https:\\\/\\\/www.freelancer.jp\",\"pattern\":\"\\\/freelancer.jp$\\\/\",\"name\":\"Japan\",\"info\":\"Go to JP site\",\"info_selected\":\"Stay in JP\",\"flag_small\":\"jp.png\",\"flag_big\":\"jp-big.png\",\"sequence\":\"860\",\"short_name\":\"japan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"49\",\"domain_name\":\"freelancer.co.kr\",\"url\":\"https:\\\/\\\/www.freelancer.co.kr\",\"pattern\":\"\\\/freelancer.co.kr$\\\/\",\"name\":\"Korea, Republic of\",\"info\":\"Go to KR site\",\"info_selected\":\"Stay in KR\",\"flag_small\":\"kr.png\",\"flag_big\":\"kr-big.png\",\"sequence\":\"865\",\"short_name\":\"korea-republic-of\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"30\",\"domain_name\":\"my.freelancer.com\",\"url\":\"https:\\\/\\\/www.my.freelancer.com\",\"pattern\":\"\\\/my.freelancer.com$\\\/\",\"name\":\"Malaysia\",\"info\":\"Go to MS site\",\"info_selected\":\"Stay in MS\",\"flag_small\":\"ms.png\",\"flag_big\":\"ms-big.png\",\"sequence\":\"870\",\"short_name\":\"malaysia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"20\",\"domain_name\":\"freelancer.pk\",\"url\":\"https:\\\/\\\/www.freelancer.pk\",\"pattern\":\"\\\/freelancer.pk$\\\/\",\"name\":\"Pakistan\",\"info\":\"Go to PK site\",\"info_selected\":\"Stay in PK\",\"flag_small\":\"pk.png\",\"flag_big\":\"pk-big.png\",\"sequence\":\"880\",\"short_name\":\"pakistan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"7\",\"domain_name\":\"freelancer.ph\",\"url\":\"https:\\\/\\\/www.freelancer.ph\",\"pattern\":\"\\\/freelancer.ph$\\\/\",\"name\":\"Philippines\",\"info\":\"Go to PH site\",\"info_selected\":\"Stay in PH\",\"flag_small\":\"ph.png\",\"flag_big\":\"ph-big.png\",\"sequence\":\"890\",\"short_name\":\"philippines\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"38\",\"domain_name\":\"freelancer.cn\",\"url\":\"https:\\\/\\\/www.freelancer.cn\",\"pattern\":\"\\\/freelancer.cn$\\\/\",\"name\":\"P.R. China\",\"info\":\"Go to ZH site\",\"info_selected\":\"Stay in ZH\",\"flag_small\":\"zh.png\",\"flag_big\":\"zh-big.png\",\"sequence\":\"900\",\"short_name\":\"china\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"6\",\"domain_name\":\"freelancer.sg\",\"url\":\"https:\\\/\\\/www.freelancer.sg\",\"pattern\":\"\\\/freelancer.sg$\\\/\",\"name\":\"Singapore\",\"info\":\"Go to SG site\",\"info_selected\":\"Stay in SG\",\"flag_small\":\"sg.png\",\"flag_big\":\"sg-big.png\",\"sequence\":\"910\",\"short_name\":\"singapore\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"44\",\"domain_name\":\"freelancer.co.th\",\"url\":\"https:\\\/\\\/www.freelancer.co.th\",\"pattern\":\"\\\/freelancer.co.th$\\\/\",\"name\":\"Thailand\",\"info\":\"Go to TH site\",\"info_selected\":\"Stay in TH\",\"flag_small\":\"th.png\",\"flag_big\":\"th-big.png\",\"sequence\":\"940\",\"short_name\":\"thailand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"54\",\"domain_name\":\"vn.freelancer.com\",\"url\":\"https:\\\/\\\/www.vn.freelancer.com\",\"pattern\":\"\\\/vn.freelancer.com$\\\/\",\"name\":\"Vietnam\",\"info\":\"Go to VN site\",\"info_selected\":\"Stay in VN\",\"flag_small\":\"vn.png\",\"flag_big\":\"vn-big.png\",\"sequence\":\"950\",\"short_name\":\"vietnam\",\"domain_switcher_region_name\":\"Asia Pacific\"}]},{\"name\":\"Latin America\",\"domains\":[{\"id\":\"18\",\"domain_name\":\"freelancer.com.ar\",\"url\":\"https:\\\/\\\/www.freelancer.com.ar\",\"pattern\":\"\\\/freelancer.com.ar$\\\/\",\"name\":\"Argentina\",\"info\":\"Go to AR site\",\"info_selected\":\"Stay in AR\",\"flag_small\":\"ar.png\",\"flag_big\":\"ar-big.png\",\"sequence\":\"1000\",\"short_name\":\"argentina\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"25\",\"domain_name\":\"br.freelancer.com\",\"url\":\"https:\\\/\\\/www.br.freelancer.com\",\"pattern\":\"\\\/br.freelancer.com$\\\/\",\"name\":\"Brazil\",\"info\":\"Go to BR site\",\"info_selected\":\"Stay in BR\",\"flag_small\":\"br.png\",\"flag_big\":\"br-big.png\",\"sequence\":\"1010\",\"short_name\":\"brazil\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"46\",\"domain_name\":\"freelancer.cl\",\"url\":\"https:\\\/\\\/www.freelancer.cl\",\"pattern\":\"\\\/freelancer.cl$\\\/\",\"name\":\"Chile\",\"info\":\"Go to CL site\",\"info_selected\":\"Stay in CL\",\"flag_small\":\"cl.png\",\"flag_big\":\"cl-big.png\",\"sequence\":\"1020\",\"short_name\":\"chile\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"37\",\"domain_name\":\"freelancer.com.co\",\"url\":\"https:\\\/\\\/www.freelancer.com.co\",\"pattern\":\"\\\/freelancer.com.co$\\\/\",\"name\":\"Colombia\",\"info\":\"Go to CO site\",\"info_selected\":\"Stay in CO\",\"flag_small\":\"co.png\",\"flag_big\":\"co-big.png\",\"sequence\":\"1030\",\"short_name\":\"colombia\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"17\",\"domain_name\":\"freelancer.ec\",\"url\":\"https:\\\/\\\/www.freelancer.ec\",\"pattern\":\"\\\/freelancer.ec$\\\/\",\"name\":\"Ecuador\",\"info\":\"Go to EC site\",\"info_selected\":\"Stay in EC\",\"flag_small\":\"ec.png\",\"flag_big\":\"ec-big.png\",\"sequence\":\"1040\",\"short_name\":\"ecuador\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"15\",\"domain_name\":\"freelancer.mx\",\"url\":\"https:\\\/\\\/www.freelancer.mx\",\"pattern\":\"\\\/freelancer.mx$\\\/\",\"name\":\"Mexico\",\"info\":\"Go to MX site\",\"info_selected\":\"Stay in MX\",\"flag_small\":\"mx.png\",\"flag_big\":\"mx-big.png\",\"sequence\":\"1050\",\"short_name\":\"mexico\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"16\",\"domain_name\":\"freelancer.com.pe\",\"url\":\"https:\\\/\\\/www.freelancer.com.pe\",\"pattern\":\"\\\/freelancer.com.pe$\\\/\",\"name\":\"Peru\",\"info\":\"Go to PE site\",\"info_selected\":\"Stay in PE\",\"flag_small\":\"pe.png\",\"flag_big\":\"pe-big.png\",\"sequence\":\"1070\",\"short_name\":\"peru\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"31\",\"domain_name\":\"freelancer.uy\",\"url\":\"https:\\\/\\\/www.freelancer.uy\",\"pattern\":\"\\\/freelancer.uy$\\\/\",\"name\":\"Uruguay\",\"info\":\"Go to UY site\",\"info_selected\":\"Stay in UY\",\"flag_small\":\"uy.png\",\"flag_big\":\"uy-big.png\",\"sequence\":\"1080\",\"short_name\":\"uruguay\",\"domain_swit:cher_region_name\":\"Latin America\"}]}]}}\n"}]},{"id":"9271659","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9271658","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"95","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"95","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Reference, Path, Query, Action } from '.\/store'\n+import { backend } from '.\/backend';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+export interface ListOptions {\n+ query: QueryObservable;\n+}\n+\n+export interface QueryObservable {\n+ limit?: number|Observable<number>;\n+ offset?: number|Observable<number>;\n+}\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<RootModel>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {}\n+\n+ list<a extends keyof RootModel, b extends keyof RootModel[a]>(\n+ key1: a,\n+ key2: b|Observable<b>,\n+ options?: ListOptions\n+ ): ListObservable<Array<RootModel[a][b]>> {\n+\n+ const pathStream = Observable.combineLatest([\n+ (key1 instanceof Observable) ? key1 : Observable.of(key1),\n+ (key2 instanceof Observable) ? key2 : Observable.of(key2)\n+ ]);\n+\n+ const query = options ? options.query : {};\n+ const queryStream = Observable.combineLatest([\n+ (query.limit instanceof Observable) ? query.limit : Observable.of(query.limit),\n+ (query.offset instanceof Observable) ? query.offset : Observable.of(query.offset)\n+ ], (limit: number, offset: number) => ({ limit, offset }));\n+\n+ const refStream = Observable.combineLatest(\n+ [pathStream, queryStream],\n+ (path: Path, query: Query): Reference => ({path, query})\n+ )\n+ .multicast(() => new ReplaySubject(1))\n+ .refCount();\n+\n+ const fetchStream = refStream\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ if (backend[path[0]] && backend[path[0]].fetch) {\n+ return Observable.of((<any>backend)[path[0]].fetch(path[1], query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => {\n+ this.store.dispatch(<Action>{\n+ type: 'API_FETCH_SUCCESS',\n+ payload: { data, ref }\n+ })\n+ })\n+ .mapTo({path, query});\n+ } else {\n+ return Observable.empty();\n+ }\n+ });\n+\n+ \/\/ TODO: WebSocket -> liveStream\n+\n+ return new ListObservable(refStream, this.apiHttp, this.store,\n+ Observable.merge(refStream, fetchStream)\n+ .switchMap(({path, query}: any) =>\n+ this.store.pluck(...path)\n+ )\n+ .distinctUntilChanged()\n+ .map((data: any) => {\n+ if (data && data.lists) {\n+ \t\t\t\t\treturn (<any>data).lists['default']\n+ \t\t\t\t\t .slice(query.offset || 0)\n+ \t\t\t\t\t .map((id: any) => (<any>data).entities[<string>id]);\n+ } else {\n+ return [];\n+ }\n+ })\n+ );\n+\n+ }\n+\n+ \/\/ TODO: object() => new ObjectObservable()\n+\n+}\n"}]},{"id":"9271657","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5,\n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9271656","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9271655","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/backend.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Backend {\n+ fetch?: (key: string, query: any) => {\n+ endpoint: string;\n+ params: {\n+ [key: string]: string|number;\n+ };\n+ },\n+ post?: (key: string) => {\n+ endpoint: string;\n+ }\n+};\n+\n+export const backend: { [k: string]: Backend } = {\n+ threads: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/threads`,\n+ params: {\n+ unread_count: 'true',\n+ last_message: 'true',\n+ message_details: 'true',\n+ context_details: 'true',\n+ user_details: 'true',\n+ limit: query.limit\n+ }\n+ })\n+ },\n+ messages: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/messages`,\n+ params: {\n+ 'threads[]': key,\n+ }\n+ }),\n+ post: (key) => ({\n+ endpoint: `messages\/0.1\/threads\/${key}\/messages\/`,\n+ params: {\n+ thread_id: key\n+ }\n+ })\n+ }\n+};\n"}]},{"id":"9271654","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.params)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ post(config: any, payload: Object): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.post(`${this.config.apiBaseUrl}\/${config.endpoint}`,\n+ this.serialize({ ...payload, ...config.params }), {\n+ headers: authHeader,\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid , token}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${uid};${token}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ const params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ params.set('compact', 'true');\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9271653","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9271652","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n"}]},{"id":"9271651","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9271650","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9271649","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ uid: number;\n+ token: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const uid = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10);\n+ const token = this.cookies.get(this.authConfig.authHashCookie);\n+ this.next({ uid, token });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9271648","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n"}]},{"id":"9271647","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9271646","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-zankoohf5q3vjjq6j33t"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271645","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9271644","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888 -ssl\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.1\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9271643","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9271642","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9271641","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9271640","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9271639","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+This project was generated with [Angular CLI](https:\/\/github.com\/angular\/angular-cli) version 1.0.0-rc.0.\n+\n+## Development server\n+Run `ng serve` for a dev server. Navigate to `http:\/\/localhost:4200\/`. The app will automatically reload if you change any of the source files.\n+\n+## Code scaffolding\n+\n+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive\/pipe\/service\/class\/module`.\n+\n+## Build\n+\n+Run `ng build` to build the project. The build artifacts will be stored in the `dist\/` directory. Use the `-prod` flag for a production build.\n+\n+## Running unit tests\n+\n+Run `ng test` to execute the unit tests via [Karma](https:\/\/karma-runner.github.io).\n+\n+## Running end-to-end tests\n+\n+Run `ng e2e` to execute the end-to-end tests via [Protractor](http:\/\/www.protractortest.org\/).\n+Before running the tests make sure you are serving the app via `ng serve`.\n+\n+## Further help\n+\n+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https:\/\/github.com\/angular\/angular-cli\/blob\/master\/README.md).\n"}]},{"id":"9271638","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6\n"}]},{"id":"9271637","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9271636","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9271635","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9271634","metadata":{"line:first":722},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"945","newLength":"946","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?mobile=true permanent;\n rewrite ^\/semm\/$ https:\/\/$host\/find\/?mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/activate.php \/local\/activate.php last;\n rewrite ^\/local\/onSignup.php \/local\/onSignup.php last;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n"}]},{"id":"9271633","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9271632","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9271631","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9271630","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271629","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-list.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271628","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9271627","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-item.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9271626","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Input } from '@angular\/core';\n import { Thread } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-item',\n template: `\n <div>{{ thread | json }}<div>\n `,\n styleUrls: ['.\/thread-item.component.less'],\n })\n export class ThreadItemComponent {\n @Input() thread: Thread;\n }\n"}]},{"id":"9271625","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":["public\/static\/modules\/messaging\/messaging.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9271624","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n import { ThreadListComponent } from '.\/thread-list.component';\n import { ThreadItemComponent } from '.\/thread-item.component';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n ],\n declarations: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n exports: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class MessagingModule {}\n"}]},{"id":"9271623","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":["public\/static\/modules\/messaging\/index.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9271622","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/messaging\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/messaging.module';\n"}]},{"id":"9271621","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9271620","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9271619","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9271618","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9271617","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { RouterModule, Routes } from '@angular\/router';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n-\n-const messagingInboxRoutes: Routes = [\n- {\n- path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forChild(messagingInboxRoutes),\n- ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class MessagingInboxRoutingModule { }\n"}]},{"id":"9271616","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9271615","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9271614","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9271613","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9271612","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9271611","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9271610","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9271609","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9271608","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9271607","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9271606","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9271605","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9271604","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9271603","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9271602","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9271601","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9271600","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9271599","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9271598","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9271597","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9271596","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"371","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9271595","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"3","delLines":"48","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1208","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"^2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n \"eslint-nibble\": \"~3.1.0\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-touch.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n- \"npm:@angular\/common@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/compiler@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/core@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/forms@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/http@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/platform-browser@2.2.4\": {\n- \"main\": \"index.js\"\n- },\n- \"npm:@angular\/router@3.2.4\": {\n- \"main\": \"index.js\"\n- },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"2fffeeb3cf709d5015bc15808b2d3ca61b944d2e":{"commit":"2fffeeb3cf709d5015bc15808b2d3ca61b944d2e","tree":"c6d40d09d21b19034620ce6aa3f12d5acb98c933","parents":["2a467dc6590b787ebbab072ea11be0d4ee62956b"],"time":"1488990967","author":"Laurent Goudet","summary":"cleanup","message":"cleanup","authorEmail":"laurent@freelancer.com"},"2a467dc6590b787ebbab072ea11be0d4ee62956b":{"commit":"2a467dc6590b787ebbab072ea11be0d4ee62956b","tree":"498a3e87259e5c1c160463f1077774900b220322","parents":["131f7a148dcfbcadbd3df6d177b7882b006f73f0"],"time":"1488990658","author":"Laurent Goudet","summary":"pluck pluck plucking","message":"pluck pluck plucking","authorEmail":"laurent@freelancer.com"},"131f7a148dcfbcadbd3df6d177b7882b006f73f0":{"commit":"131f7a148dcfbcadbd3df6d177b7882b006f73f0","tree":"4f17b76b5c288f0726738cb8dbe8b91c00286237","parents":["79b6461eb65a7d3a9dd7a5120496b34aed731aea"],"time":"1488990284","author":"Laurent Goudet","summary":"more improvements","message":"more improvements","authorEmail":"laurent@freelancer.com"},"79b6461eb65a7d3a9dd7a5120496b34aed731aea":{"commit":"79b6461eb65a7d3a9dd7a5120496b34aed731aea","tree":"35b936db1e49a3aa6e0486031a1d70bb98fc16fc","parents":["a3f34334da468fa18fce95cfdd6d07057d1c3e88"],"time":"1488986050","author":"Laurent Goudet","summary":"Update cli to rc1","message":"Update cli to rc1","authorEmail":"laurent@freelancer.com"},"a3f34334da468fa18fce95cfdd6d07057d1c3e88":{"commit":"a3f34334da468fa18fce95cfdd6d07057d1c3e88","tree":"41cd820055f91b119d9c8a797bdbd83791eca5f0","parents":["2b096f05e8550a621882e4da5e8d3b1a5f3ddae4"],"time":"1488985757","author":"Laurent Goudet","summary":"Finish renaming","message":"Finish renaming","authorEmail":"laurent@freelancer.com"},"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4":{"commit":"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4","tree":"579fb8566e194b3d80a6543b304c56ffc9263a7a","parents":["203a6aa47f50467ad46e556442f65d2c5aa574c6"],"time":"1488984749","author":"Laurent Goudet","summary":"more renaming","message":"more renaming","authorEmail":"laurent@freelancer.com"},"203a6aa47f50467ad46e556442f65d2c5aa574c6":{"commit":"203a6aa47f50467ad46e556442f65d2c5aa574c6","tree":"3bb4fc3a032bebb279f521ab7fb269f6aba8c600","parents":["99562cd0ca1d33a5132cb132bfb5a79f46c1a057"],"time":"1488978328","author":"Laurent Goudet","summary":"it works","message":"it works","authorEmail":"laurent@freelancer.com"},"99562cd0ca1d33a5132cb132bfb5a79f46c1a057":{"commit":"99562cd0ca1d33a5132cb132bfb5a79f46c1a057","tree":"a90b746681e137aa40e21d6aa2e82be7022cb3d9","parents":["8c26bbd83a354887739377f4beb4a3e82e3905e2"],"time":"1488903326","author":"Laurent Goudet","summary":"bugz","message":"bugz","authorEmail":"laurent@freelancer.com"},"8c26bbd83a354887739377f4beb4a3e82e3905e2":{"commit":"8c26bbd83a354887739377f4beb4a3e82e3905e2","tree":"32398a01d49efebce64b2f14d55cfdf0babc5dc5","parents":["fca85f7440b205d1b05d860cae596e72cae65150"],"time":"1488902573","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"fca85f7440b205d1b05d860cae596e72cae65150":{"commit":"fca85f7440b205d1b05d860cae596e72cae65150","tree":"0b44b65f63fe3bd3a590632ccb4681afd1de402c","parents":["4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c"],"time":"1488819407","author":"Laurent Goudet","summary":"Bugz fixing","message":"Bugz fixing","authorEmail":"laurent@freelancer.com"},"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c":{"commit":"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c","tree":"e86302ebe2ecb73a3e4893f93119efd6f1ea458c","parents":["c3815d83d0278276714c527df4b976ff2c29aa19"],"time":"1488818884","author":"Laurent Goudet","summary":"Dynamic queries handling","message":"Dynamic queries handling","authorEmail":"laurent@freelancer.com"},"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"700396":{"id":"700396","revisionID":"56417","dateCreated":"1488990719","dateModified":"1488990722","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - pluck pluck plucking","unitStatus":"1","lintStatus":"3","changes":[{"id":"9271594","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5280","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5280","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n"}]},{"id":"9271593","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271592","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9271591","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9271590","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.key","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN RSA PRIVATE KEY-----\n+MIICWwIBAAKBgQCmipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LV\n+g\/kgt79am1bnF+\/HF880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R\n+1uHyD\/46sYtMejy3n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQAB\n+AoGATqG34hCSf11mWDUPNXjuCcz8eLF8Ugab\/pMngrPR2OWOSKue4y73jmITYBVd\n+96iOlqMAOxpmfFp\/R81PIHdi++Bax1NfSBT8tK0U7HHzkbHEXyvHiBSug78Y14h8\n+Y\/NMZXEvVapY7lapr5ZgOSf2rcKOlceMRsoohl6bGc+55BECQQDPZTw5WxDDe7\/W\n+oYzHy7abLw+A92cP8A6qlwXBik9ko6jtYXvoI454OIr6RsHoFPU9bUkx5G1fvOUZ\n+J3sxfxMZAkEAzZJEwcvmxHizX\/2NZZ8LvVyWGpao07bBcAEvDXDZFOZqKUujukOe\n+iilQD6JZDJTmW9RJmOgdQKeL9ZaTlX3MqwJASMJrbnPUXcB8fQAQM8f0OF06QzSI\n+o77EZnS1QEEVuWjxStZ4ceiHgwXTPBq2zIUNxI8irq5E8OGEPl7riWHbgQJARzqL\n+QGsaRrFb1cLRH4kAVFikWgoh7VnBpMGEQC\/9x9QerLhcvsl3QYAXEZO7LzTYrLDd\n+33Ft0V08jZfjA0VXiQJAOwX6glfDKf79AK1sifFQc\/v0Yu87LIOAwp0zLlsnO0Q9\n+xQV3TdjlNQebfTG+Uw1tmbcCb2wcGFfD199IHpAzIA==\n+-----END RSA PRIVATE KEY-----\n"}]},{"id":"9271589","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.crt","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN CERTIFICATE-----\n+MIICAzCCAWwCCQDlm49KXF45gzANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJB\n+VTETMBEGA1UECBMKU29tZS1TdGF0ZTEQMA4GA1UEChMHR3J1bnRKUzEQMA4GA1UE\n+AxMHMC4wLjAuMDAeFw0xNDAyMTkyMzE1NDRaFw0xNTAyMTkyMzE1NDRaMEYxCzAJ\n+BgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRAwDgYDVQQKEwdHcnVudEpT\n+MRAwDgYDVQQDEwcwLjAuMC4wMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm\n+ipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LVg\/kgt79am1bnF+\/H\n+F880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R1uHyD\/46sYtMejy3\n+n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQABMA0GCSqGSIb3DQEB\n+BQUAA4GBADnTBlN7+Aa8zj2zsUBSUv9w7iYut3ZDvrEY+IJt8EurwA6+Q7rQqVsY\n+an5ztiEESriWvqNIfvWb+Yekhv9sISJFMfApVbimmT6QseQcFEIlRNW5cfukHQVH\n+9dBI7upQO2vN7N9ABo4a3aBANMBxIvCnE+adiqNOTJF\/8qkiAFY9\n+-----END CERTIFICATE-----\n"}]},{"id":"9271588","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9271587","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9271586","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9271585","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9271584","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9271583","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271582","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9271581","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9271580","metadata":{"old:file:size":2238,"old:file:mime-type":"image\/x-icon","old:binary-phid":"PHID-FILE-53qwkbtsfrwkkjhzkdxt"},"oldPath":null,"currentPath":"public\/favicon.ico","awayPaths":["webapp\/src\/favicon.ico"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271579","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-ixjbgigrz7jjjjsa5ora"},"oldPath":"public\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271578","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const environment = {\n+ production: false,\n+ gafBaseUrl: 'https:\/\/laurent.syd1.fln-dev.net',\n+ authConfig: {\n+ baseUrl: `https:\/\/laurent.syd1.fln-dev.net\/auth`,\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/api`,\n+ ajaxBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/ajax`,\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n"}]},{"id":"9271577","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271576","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9271575","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271574","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+import 'rxjs\/add\/observable\/merge';\n+import 'rxjs\/add\/observable\/from';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/merge';\n+import 'rxjs\/add\/operator\/mergeMap';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/pluck';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n+import 'rxjs\/add\/operator\/multicast';\n+import 'rxjs\/add\/operator\/scan';\n+import 'rxjs\/add\/operator\/take';\n"}]},{"id":"9271573","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.assign(`${environment.gafBaseUrl}${state.url}`);\n+ return false;\n+ }\n+}\n"}]},{"id":"9271572","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"55","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"55","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ template: `\n+ <div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+\n+ <!-- <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>-->\n+ <\/div>\n+ `,\n+})\n+export class ThreadComponent {\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.messages = this.datastore.list(\n+ 'messages',\n+ this.route.params.map(({threadId}) => threadId), {\n+ query: {\n+ limit: 10\n+ }\n+ }\n+ );\n+ }\n+\n+ sendMessage(message: string) {\n+ this.auth.switchMap(({uid}) =>\n+ this.messages.push({\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ busy: true,\n+ from_user: uid.toString()\n+ })\n+ ).toPromise();\n+ }\n+}\n"}]},{"id":"9271571","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9271570","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9271569","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread.thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9271568","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9271567","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+\n+ <fl-user-avatar [src]=\"thread.owner.avatar\"\n+ class=\"avatar\">\n+ <\/fl-user-avatar>\n+ <div class=\"body\">\n+ <div class=\"body-content-username\"\n+ *ngFor=\"let member of thread.members; let $last = last;\">\n+ {{ member.username }}<span *ngIf=\"!$last\">,<\/span>\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{ thread.message.message }}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9271566","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"33","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9271565","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9271564","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9271563","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9271562","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9271561","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9271560","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9271559","metadata":{"line:first":1,"copy:lines":{"47":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"48":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"49":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"50":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"50","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"50","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ThreadComponent,\n+ EmptyThreadComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n"}]},{"id":"9271558","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"70","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"70","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Thread } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <router-outlet><\/router-outlet>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ \/\/threadsUnreadCount: ObjectObservable<ThreadUnreadCount>;\n+ threadsLimit = new Subject<number>();\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ const uid = this.auth.map(({uid}) => uid.toString());\n+ this.threads = this.datastore.list('threads', uid, {\n+ query: {\n+ limit: this.threadsLimit\n+ .startWith(10)\n+ .scan((acc, curr) => acc + curr)\n+ }\n+ }\n+ );\n+ \/\/this.threadsUnreadCount = this.datastore.list('threadsUnreadCount', uid);\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.next(count);\n+ }\n+\n+ createThread() {\n+ \/\/this.threads.push(...);\n+ }\n+\n+}\n"}]},{"id":"9271557","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9271556","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",3,"-"],"7":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",6,"-"],"8":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",7,"-"],"9":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",8,"-"],"10":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",9,"-"],"24":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",16,"-"],"25":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",17,"-"],"26":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",18,"-"],"27":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",19,"-"],"28":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",20,"-"],"29":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",21,"-"],"30":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",25,"-"],"31":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",26,"-"],"32":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",27,"-"],"33":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",28,"-"],"34":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",29,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { RouterModule, Routes } from '@angular\/router';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { AuthGuard } from '..\/auth-guard.service';\n+\n+const messagingInboxRoutes: Routes = [\n+ {\n+ path: '',\n+ canActivate: [AuthGuard],\n+ component: MessagingInboxComponent,\n+ children: [\n+ {\n+ path: '',\n+ component: EmptyThreadComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: ThreadComponent\n+ }\n+ ]\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forChild(messagingInboxRoutes),\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class MessagingInboxRoutingModule { }\n"}]},{"id":"9271555","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message of messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9271554","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9271553","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9271552","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9271551","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message = new EventEmitter<string>();\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9271550","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9271549","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9271548","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9271547","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/empty-thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: `\n+ <div>\n+ NO THREAD SELECTED\n+ <\/div>\n+ `,\n+})\n+export class EmptyThreadComponent {\n+\n+}\n"}]},{"id":"9271546","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9271545","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9271544","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9271543","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9271542","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.uid) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9271541","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9271540","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9271539","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9271538","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"35","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"35","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n"}]},{"id":"9271537","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9271536","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/user-avatar.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular\/core';\n+@Component({\n+ selector: 'fl-user-avatar',\n+ template: `\n+ <img [src]=\"avatarUrl\" \/>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class UserAvatarComponent implements OnChanges {\n+ private avatarUrl: string;\n+ @Input() src: string;\n+\n+ constructor() {}\n+\n+ ngOnChanges() {\n+ if (this.src) {\n+ this.avatarUrl = `https:\/\/laurent.syd1.fln-dev.net${this.src}`;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9271535","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271534","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n+import { UserAvatarComponent } from '.\/user-avatar.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9271533","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9271532","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9271531","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9271530","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+\n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+\n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+\n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+\n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+\n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+\n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver;\n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9271529","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9271528","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9271527","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9271526","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9271525","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9271524","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9271523","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9271522","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9271521","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use\n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+\n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9271520","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/verification-banner\/verificationBanner.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface VerificationBanners {\n+ [userId: string]: VerificationBanner\n+}\n+\n+export interface VerificationBanner {\n+ email: string;\n+ params: string; \/\/ \"id=15540180&key=8656f81647a32f8331bea7921d0cef14dc9929e8\"\n+ showPhoneVerifyBanner: boolean;\n+ show_resend_btn: boolean;\n+ type_of_notif: string; \/\/ \"email\"\n+ username: string; \/\/ \"laurent\"\n+}\n"}]},{"id":"9271519","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9271518","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Thread, ThreadUnreadCount } from '.\/thread.model';\n+\n+export const threadReducer = (\n+ state: Readonly<{ [userId: string]: Entities<Thread> }> = {},\n+ action: Action\n+): Readonly<{ [userId: string]: Entities<Thread> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ console.log('threadReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ Denoramlize the Thread API response\n+ const contextDetails = data.context_details;\n+ const users = data.users;\n+ const threads = data.threads.reduce((acc: any, thread: any) => {\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.project = contextDetails.projects[context.id];\n+ } else {\n+ context.contest = contextDetails.contests[context.id];\n+ }\n+ context.id = undefined;\n+ const members = thread.thread.members.map((memberId: number) => {\n+ return { ...users[memberId], ...{\n+ \/\/ Avatar CDN URLs returned by the API are crap\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ });\n+ const owner = { ...users[thread.thread.owner], ...{\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ const threadInner = { ...thread.thread, context, members, owner };\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ acc[thread.id] = { ...thread , ...{ thread: threadInner }, messages };\n+ return acc;\n+ }, {});\n+\n+ return mergeEntities(state, threads, ref);\n+\n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n+export const threadUnreadCountReducer =\n+ (state: Entities<ThreadUnreadCount> = {}, action: Action): Entities<ThreadUnreadCount> => {\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ return mergeEntities(state, data.unread_thread_count, ref);\n+ return state;\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9271517","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface ThreadUnreadCount {\n+ unread_thread_count: number;\n+}\n+\n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ type: 'project' | 'contest';\n+ contest?: any;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD\n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9271516","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"73","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"73","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+import { RootModel } from '.\/root.model';\n+\n+import { Thread, ThreadUnreadCount } from '.\/thread\/thread.model';\n+import { threadReducer, threadUnreadCountReducer } from '.\/thread\/thread.reducer';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+\n+import { Observable } from 'rxjs\/Observable';\n+\n+export interface Reference {\n+ path: Path;\n+ query: Query;\n+}\n+\n+export type Path = [keyof RootModel, string];\n+\n+export interface Query {\n+ limit?: number;\n+ offset?: number;\n+}\n+\n+export interface Action {\n+ type: ActionType;\n+ payload?: {\n+ data: any;\n+ ref: Reference;\n+ }\n+}\n+\n+export type ActionType = 'API_FETCH_SUCCESS'\n+ | 'API_POST'\n+ | 'API_POST_SUCCESS';\n+\n+export interface Entities<T> {\n+ entities?: {\n+ [id: string]: T;\n+ };\n+ lists?: {\n+ [query: string]: T[];\n+ };\n+};\n+\n+export const mergeEntities = (state: any, entities: any, ref: Reference) => {\n+ const data = state[ref.path[1]] || {};\n+ const query = 'default';\n+ return { ...state, ...{\n+ [ref.path[1]]: {\n+ entities: {\n+ ...data.entities,\n+ ...entities\n+ },\n+ lists: {\n+ ...data.lists,\n+ ...{\n+ [query]: Object.keys(entities).reduce((acc, id, index) => {\n+ acc[(ref.query.offset || 0) + index] = id;\n+ return acc;\n+ }, data.lists ? ([...data.lists[query]] || []) : [])\n+ }\n+ }\n+ }\n+ }};\n+};\n+\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ threadsUnreadCount: threadUnreadCountReducer,\n+ messages: messageReducer,\n+});\n"}]},{"id":"9271515","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/root.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface RootModel {\n+ threads: {\n+ [userId: string]: Thread;\n+ },\n+ threadsUnreadCount: {\n+ [userId: string]: ThreadUnreadCount\n+ },\n+ messages: {\n+ [threadId: string]: Message;\n+ }\n+};\n"}]},{"id":"9271514","metadata":[],"oldPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","currentPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271513","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Message } from '.\/message.model';\n+\n+export const messageReducer = (\n+ state: Readonly<{ [threadId: string]: Entities<Message> }> = {},\n+ action: Action\n+): Readonly<{ [threadId: string]: Entities<Message> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'messages') {\n+ console.log('messageReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS': {\n+ const { data, ref } = action.payload;\n+ const messages = data.messages.reduce((acc: any, message: any) => {\n+ acc[message.id] = message;\n+ return acc;\n+ }, {});\n+ return mergeEntities(state, messages, ref);\n+ }\n+\n+ case 'API_POST': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ case 'API_POST_SUCCESS': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ \/*case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9271512","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n"}]},{"id":"9271511","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9271510","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"45","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"45","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Reference, Action } from '.\/store';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+import { backend } from '.\/backend';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private ref$: any,\n+ private apiHttp: ApiHttp,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.ref$, this.apiHttp, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ push(body: Object): Observable<boolean> {\n+ console.log('push', body);\n+ return this.ref$.take(1)\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ return Observable.of((<any>backend)[path[0]].post(path[1]))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST',\n+ payload: { data, ref }\n+ }))\n+ .switchMap((config) => this.apiHttp.post(config, body))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST_SUCCESS',\n+ payload: { data, ref }\n+ }))\n+ })\n+ .mapTo(true)\n+ }\n+\n+}\n"}]},{"id":"9271509","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/languages-domains\/languages-domains.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface LanguagesDomains {\n+\n+\n+}\n+\n+{\"status\":\"success\",\"data\":{\"languages\":[{\"id\":\"4\",\"code\":\"af\",\"name\":\"Afrikaans\",\"englishName\":\"Afrikaans\",\"iso6391\":\"af\",\"iso6392\":\"afr\",\"active\":true},{\"id\":\"19\",\"code\":\"bn\",\"name\":\"\\u09ac\\u09be\\u0982\\u09b2\\u09be\",\"englishName\":\"Bengali\",\"iso6391\":\"bn\",\"iso6392\":\"ben\",\"active\":true},{\"id\":\"23\",\"code\":\"ca\",\"name\":\"Catal\\u00e0\",\"englishName\":\"Catalan\",\"iso6391\":\"ca\",\"iso6392\":\"cat\",\"active\":true},{\"id\":\"28\",\"code\":\"cs\",\"name\":\"\\u010ce\\u0161tina\",\"englishName\":\"Czech\",\"iso6391\":\"cs\",\"iso6392\":\"ces\",\"active\":true},{\"id\":\"32\",\"code\":\"da\",\"name\":\"Dansk\",\"englishName\":\"Danish\",\"iso6391\":\"da\",\"iso6392\":\"dan\",\"active\":true},{\"id\":\"33\",\"code\":\"de\",\"name\":\"Deutsch\",\"englishName\":\"German\",\"iso6391\":\"de\",\"iso6392\":\"deu\",\"active\":true},{\"id\":\"37\",\"code\":\"el\",\"name\":\"\\u03b5\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac\",\"englishName\":\"Greek, Modern\",\"iso6391\":\"el\",\"iso6392\":\"ell\",\"active\":true},{\"id\":\"38\",\"code\":\"en\",\"name\":\"English\",\"englishName\":\"English\",\"iso6391\":\"en\",\"iso6392\":\"eng\",\"active\":true},{\"id\":\"40\",\"code\":\"es\",\"name\":\"Espa\\u00f1ol\",\"englishName\":\"Spanish\",\"iso6391\":\"es\",\"iso6392\":\"spa\",\"active\":true},{\"id\":\"45\",\"code\":\"fi\",\"name\":\"Suomi\",\"englishName\":\"Finnish\",\"iso6391\":\"fi\",\"iso6392\":\"fin\",\"active\":true},{\"id\":\"46\",\"code\":\"fil\",\"name\":\"Filipino\",\"englishName\":\"Filipino\",\"iso6391\":\"\",\"iso6392\":\"fil\",\"active\":true},{\"id\":\"49\",\"code\":\"fr\",\"name\":\"Fran\\u00e7ais\",\"englishName\":\"French\",\"iso6391\":\"fr\",\"iso6392\":\"fra\",\"active\":true},{\"id\":\"60\",\"code\":\"hi\",\"name\":\"\\u0939\\u093f\\u0928\\u094d\\u0926\\u0940\",\"englishName\":\"Hindi\",\"iso6391\":\"hi\",\"iso6392\":\"hin\",\"active\":true},{\"id\":\"64\",\"code\":\"hu\",\"name\":\"Magyar\",\"englishName\":\"Hungarian\",\"iso6391\":\"hu\",\"iso6392\":\"hun\",\"active\":true},{\"id\":\"68\",\"code\":\"id\",\"name\":\"Bahasa Indonesia\",\"englishName\":\"Indonesian\",\"iso6391\":\"id\",\"iso6392\":\"ind\",\"active\":true},{\"id\":\"75\",\"code\":\"it\",\"name\":\"Italiano\",\"englishName\":\"Italian\",\"iso6391\":\"it\",\"iso6392\":\"ita\",\"active\":true},{\"id\":\"77\",\"code\":\"ja\",\"name\":\"\\u65e5\\u672c\\u8a9e\",\"englishName\":\"Japanese\",\"iso6391\":\"ja\",\"iso6392\":\"jpn\",\"active\":true},{\"id\":\"87\",\"code\":\"ko\",\"name\":\"\\ud55c\\uad6d\\uc5b4\",\"englishName\":\"Korean\",\"iso6391\":\"ko\",\"iso6392\":\"kor\",\"active\":true},{\"id\":\"109\",\"code\":\"ms\",\"name\":\"Bahasa Malaysia\",\"englishName\":\"Malay\",\"iso6391\":\"ms\",\"iso6392\":\"msa\",\"active\":true},{\"id\":\"113\",\"code\":\"nb\",\"name\":\"Norsk-Bokm\\u00e5l\",\"englishName\":\"Norwegian Bokm\\u00e5l\",\"iso6391\":\"nb\",\"iso6392\":\"nob\",\"active\":true},{\"id\":\"118\",\"code\":\"nl\",\"name\":\"Nederlands\",\"englishName\":\"Dutch\",\"iso6391\":\"nl\",\"iso6392\":\"nld\",\"active\":true},{\"id\":\"132\",\"code\":\"pl\",\"name\":\"Polski\",\"englishName\":\"Polish\",\"iso6391\":\"pl\",\"iso6392\":\"pol\",\"active\":true},{\"id\":\"134\",\"code\":\"pt\",\"name\":\"Portugu\\u00eas\",\"englishName\":\"Portuguese\",\"iso6391\":\"pt\",\"iso6392\":\"por\",\"active\":true},{\"id\":\"138\",\"code\":\"ro\",\"name\":\"Rom\\u00e2n\\u0103\",\"englishName\":\"Romanian\",\"iso6391\":\"ro\",\"iso6392\":\"ron\",\"active\":true},{\"id\":\"139\",\"code\":\"ru\",\"name\":\"\\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439\",\"englishName\":\"Russian\",\"iso6391\":\"ru\",\"iso6392\":\"rus\",\"active\":true},{\"id\":\"148\",\"code\":\"sl\",\"name\":\"Sloven\\u0161\\u010dina\",\"englishName\":\"Slovenian\",\"iso6391\":\"sl\",\"iso6392\":\"slv\",\"active\":true},{\"id\":\"152\",\"code\":\"sq\",\"name\":\"Shqip\",\"englishName\":\"Albanian\",\"iso6391\":\"sq\",\"iso6392\":\"sqi\",\"active\":true},{\"id\":\"157\",\"code\":\"sv\",\"name\":\"Svenska\",\"englishName\":\"Swedish\",\"iso6391\":\"sv\",\"iso6392\":\"swe\",\"active\":true},{\"id\":\"158\",\"code\":\"sw\",\"name\":\"Kiswahili\",\"englishName\":\"Swahili\",\"iso6391\":\"sw\",\"iso6392\":\"swa\",\"active\":true},{\"id\":\"163\",\"code\":\"th\",\"name\":\"\\u0e20\\u0e32\\u0e29\\u0e32\\u0e44\\u0e17\\u0e22\",\"englishName\":\"Thai\",\"iso6391\":\"th\",\"iso6392\":\"tha\",\"active\":true},{\"id\":\"171\",\"code\":\"tr\",\"name\":\"T\\u00fcrk\\u00e7e\",\"englishName\":\"Turkish\",\"iso6391\":\"tr\",\"iso6392\":\"tur\",\"active\":true},{\"id\":\"178\",\"code\":\"uk\",\"name\":\"\\u0423\\u043a\\u0440\\u0430\\u0457\\u043d\\u0441\\u044c\\u043a\\u0430\",\"englishName\":\"Ukrainian\",\"iso6391\":\"uk\",\"iso6392\":\"ukr\",\"active\":true},{\"id\":\"182\",\"code\":\"vi\",\"name\":\"Ti\\u1ebfng Vi\\u1ec7t\",\"englishName\":\"Vietnamese\",\"iso6391\":\"vi\",\"iso6392\":\"vie\",\"active\":true},{\"id\":\"190\",\"code\":\"zh\",\"name\":\"\\u4e2d\\u6587(\\u7b80\\u4f53)\",\"englishName\":\"Chinese\",\"iso6391\":\"zh\",\"iso6392\":\"zho\",\"active\":true}],\"domains\":[{\"name\":\"North America\",\"domains\":[{\"id\":\"1\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\",\"pattern\":\"\\\/freelancer.com$\\\/\",\"name\":\"US (International)\",\"info\":\"Go to global site\",\"info_selected\":\"Stay in US\",\"flag_small\":\"us.png\",\"flag_big\":\"us-big.png\",\"sequence\":\"200\",\"short_name\":\"usa\",\"domain_switcher_region_name\":\"North America\",\"current\":true},{\"id\":\"9\",\"domain_name\":\"freelancer.ca\",\"url\":\"https:\\\/\\\/www.freelancer.ca\",\"pattern\":\"\\\/freelancer.ca$\\\/\",\"name\":\"Canada\",\"info\":\"Go to CA site\",\"info_selected\":\"Stay in CA\",\"flag_small\":\"ca.png\",\"flag_big\":\"ca-big.png\",\"sequence\":\"210\",\"short_name\":\"canada\",\"domain_switcher_region_name\":\"North America\"},{\"id\":\"13\",\"domain_name\":\"freelancer.com.jm\",\"url\":\"https:\\\/\\\/www.freelancer.com.jm\",\"pattern\":\"\\\/freelancer.com.jm$\\\/\",\"name\":\"Jamaica\",\"info\":\"Go to JM site\",\"info_selected\":\"Stay in JM\",\"flag_small\":\"jm.png\",\"flag_big\":\"jm-big.png\",\"sequence\":\"220\",\"short_name\":\"jamaica\",\"domain_switcher_region_name\":\"North America\"}]},{\"name\":\"Africa\",\"domains\":[{\"id\":\"11\",\"domain_name\":\"freelancer.co.za\",\"url\":\"https:\\\/\\\/www.freelancer.co.za\",\"pattern\":\"\\\/freelancer.co.za$\\\/\",\"name\":\"South Africa\",\"info\":\"Go to ZA site\",\"info_selected\":\"Stay in ZA\",\"flag_small\":\"za.png\",\"flag_big\":\"za-big.png\",\"sequence\":\"500\",\"short_name\":\"south-africa\",\"domain_switcher_region_name\":\"Africa\"},{\"id\":\"55\",\"domain_name\":\"freelancer.co.ke\",\"url\":\"https:\\\/\\\/www.freelancer.co.ke\",\"pattern\":\"\\\/freelancer.co.ke$\\\/\",\"name\":\"Kenya\",\"info\":\"Go to KE site\",\"info_selected\":\"Stay in KE\",\"flag_small\":\"ke.png\",\"flag_big\":\"ke-big.png\",\"sequence\":\"510\",\"short_name\":\"kenya\",\"domain_switcher_region_name\":\"Africa\"}]},{\"name\":\"Europe\",\"domains\":[{\"id\":\"4\",\"domain_name\":\"freelancer.co.uk\",\"url\":\"https:\\\/\\\/www.freelancer.co.uk\",\"pattern\":\"\\\/freelancer.co.uk$\\\/\",\"name\":\"United Kingdom\",\"info\":\"Go to UK site\",\"info_selected\":\"Stay in UK\",\"flag_small\":\"uk.png\",\"flag_big\":\"uk-big.png\",\"sequence\":\"600\",\"short_name\":\"uk\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"10\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/eu\\\/welcome.php\",\"pattern\":\"\\\/freelancer.eu$\\\/\",\"name\":\"European Union\",\"info\":\"Go to EU site\",\"info_selected\":\"Stay in EU\",\"flag_small\":\"eu.png\",\"flag_big\":\"eu-big.png\",\"sequence\":\"610\",\"short_name\":\"europe-union\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"22\",\"domain_name\":\"fr.freelancer.com\",\"url\":\"https:\\\/\\\/www.fr.freelancer.com\",\"pattern\":\"\\\/fr.freelancer.com$\\\/\",\"name\":\"France\",\"info\":\"Go to FR site\",\"info_selected\":\"Stay in FR\",\"flag_small\":\"fr.png\",\"flag_big\":\"fr-big.png\",\"sequence\":\"620\",\"short_name\":\"france\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"8\",\"domain_name\":\"freelancer.de\",\"url\":\"https:\\\/\\\/www.freelancer.de\",\"pattern\":\"\\\/freelancer.de$\\\/\",\"name\":\"Germany\",\"info\":\"Go to DE site\",\"info_selected\":\"Stay in DE\",\"flag_small\":\"de.png\",\"flag_big\":\"de-big.png\",\"sequence\":\"630\",\"short_name\":\"germany\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"42\",\"domain_name\":\"freelancer.gr\",\"url\":\"https:\\\/\\\/www.freelancer.gr\",\"pattern\":\"\\\/freelancer.gr$\\\/\",\"name\":\"Greece\",\"info\":\"Go to GR site\",\"info_selected\":\"Stay in GR\",\"flag_small\":\"gr.png\",\"flag_big\":\"gr-big.png\",\"sequence\":\"640\",\"short_name\":\"greece\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"35\",\"domain_name\":\"freelancer.pt\",\"url\":\"https:\\\/\\\/www.freelancer.pt\",\"pattern\":\"\\\/freelancer.pt$\\\/\",\"name\":\"Portugal\",\"info\":\"Go to PT site\",\"info_selected\":\"Stay in PT\",\"flag_small\":\"pt.png\",\"flag_big\":\"pt-big.png\",\"sequence\":\"650\",\"short_name\":\"portugal\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"14\",\"domain_name\":\"freelancer.es\",\"url\":\"https:\\\/\\\/www.freelancer.es\",\"pattern\":\"\\\/freelancer.es$\\\/\",\"name\":\"Spain\",\"info\":\"Go to ES site\",\"info_selected\":\"Stay in ES\",\"flag_small\":\"es.png\",\"flag_big\":\"es-big.png\",\"sequence\":\"660\",\"short_name\":\"spain\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"45\",\"domain_name\":\"freelancer.cz\",\"url\":\"https:\\\/\\\/www.freelancer.cz\",\"pattern\":\"\\\/freelancer.cz$\\\/\",\"name\":\"Czech Republic\",\"info\":\"Go to CZ site\",\"info_selected\":\"Stay in CZ\",\"flag_small\":\"cz.png\",\"flag_big\":\"cz-big.png\",\"sequence\":\"665\",\"short_name\":\"czech-republic\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"33\",\"domain_name\":\"freelancer.se\",\"url\":\"https:\\\/\\\/www.freelancer.se\",\"pattern\":\"\\\/freelancer.se$\\\/\",\"name\":\"Sweden\",\"info\":\"Go to SV site\",\"info_selected\":\"Stay in SV\",\"flag_small\":\"sv.png\",\"flag_big\":\"sv-big.png\",\"sequence\":\"670\",\"short_name\":\"sweden\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"43\",\"domain_name\":\"freelancer.is\",\"url\":\"https:\\\/\\\/www.freelancer.is\",\"pattern\":\"\\\/freelancer.is$\\\/\",\"name\":\"Iceland\",\"info\":\"Go to IS site\",\"info_selected\":\"Stay in IS\",\"flag_small\":\"is.png\",\"flag_big\":\"is-big.png\",\"sequence\":\"680\",\"short_name\":\"iceland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"50\",\"domain_name\":\"freelancer.ie\",\"url\":\"https:\\\/\\\/www.freelancer.ie\",\"pattern\":\"\\\/freelancer.ie$\\\/\",\"name\":\"Ireland\",\"info\":\"Go to IE site\",\"info_selected\":\"Stay in IE\",\"flag_small\":\"ie.png\",\"flag_big\":\"ie-big.png\",\"sequence\":\"685\",\"short_name\":\"ireland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"26\",\"domain_name\":\"freelancer.co.it\",\"url\":\"https:\\\/\\\/www.freelancer.co.it\",\"pattern\":\"\\\/freelancer.co.it$\\\/\",\"name\":\"Italy\",\"info\":\"Go to IT site\",\"info_selected\":\"Stay in IT\",\"flag_small\":\"it.png\",\"flag_big\":\"it-big.png\",\"sequence\":\"690\",\"short_name\":\"italy\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"27\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/changeLanguage.php?lang=nl\",\"pattern\":\"\\\/freelancer.co.nl$\\\/\",\"name\":\"Netherlands\",\"info\":\"Go to NL site\",\"info_selected\":\"Stay in NL\",\"flag_small\":\"nl.png\",\"flag_big\":\"nl-big.png\",\"sequence\":\"700\",\"short_name\":\"netherlands\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"28\",\"domain_name\":\"tr.freelancer.com\",\"url\":\"https:\\\/\\\/www.tr.freelancer.com\",\"pattern\":\"\\\/tr.freelancer.com$\\\/\",\"name\":\"Turkey\",\"info\":\"Go to TR site\",\"info_selected\":\"Stay in TR\",\"flag_small\":\"tr.png\",\"flag_big\":\"tr-big.png\",\"sequence\":\"710\",\"short_name\":\"turkey\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"36\",\"domain_name\":\"freelancer.pl\",\"url\":\"https:\\\/\\\/www.freelancer.pl\",\"pattern\":\"\\\/freelancer.pl$\\\/\",\"name\":\"Poland\",\"info\":\"Go to PL site\",\"info_selected\":\"Stay in PL\",\"flag_small\":\"pl.png\",\"flag_big\":\"pl-big.png\",\"sequence\":\"720\",\"short_name\":\"poland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"39\",\"domain_name\":\"freelancer.co.ro\",\"url\":\"https:\\\/\\\/www.freelancer.co.ro\",\"pattern\":\"\\\/freelancer.co.ro$\\\/\",\"name\":\"Romania\",\"info\":\"Go to RO site\",\"info_selected\":\"Stay in RO\",\"flag_small\":\"ro.png\",\"flag_big\":\"ro-big.png\",\"sequence\":\"730\",\"short_name\":\"romania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"40\",\"domain_name\":\"freelancer.com.ru\",\"url\":\"https:\\\/\\\/www.freelancer.com.ru\",\"pattern\":\"\\\/freelancer.com.ru$\\\/\",\"name\":\"Russia\",\"info\":\"Go to RU site\",\"info_selected\":\"Stay in RU\",\"flag_small\":\"ru.png\",\"flag_big\":\"ru-big.png\",\"sequence\":\"740\",\"short_name\":\"russia\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"47\",\"domain_name\":\"freelancer.com.ua\",\"url\":\"https:\\\/\\\/www.freelancer.com.ua\",\"pattern\":\"\\\/freelancer.com.ua$\\\/\",\"name\":\"Ukraine\",\"info\":\"Go to UA site\",\"info_selected\":\"Stay in UA\",\"flag_small\":\"ua.png\",\"flag_big\":\"ua-big.png\",\"sequence\":\"1090\",\"short_name\":\"ukraine\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"48\",\"domain_name\":\"freelancer.no\",\"url\":\"https:\\\/\\\/www.freelancer.no\",\"pattern\":\"\\\/freelancer.no$\\\/\",\"name\":\"Norway\",\"info\":\"Go to NO site\",\"info_selected\":\"Stay in NO\",\"flag_small\":\"no.png\",\"flag_big\":\"no-big.png\",\"sequence\":\"1100\",\"short_name\":\"norway\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"57\",\"domain_name\":\"freelancer.hu\",\"url\":\"https:\\\/\\\/www.freelancer.hu\",\"pattern\":\"\\\/freelancer.hu$\\\/\",\"name\":\"Hungary\",\"info\":\"Go to HU site\",\"info_selected\":\"Stay in HU\",\"flag_small\":\"hu.png\",\"flag_big\":\"hu-big.png\",\"sequence\":\"1110\",\"short_name\":\"hungary\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"52\",\"domain_name\":\"fi.freelancer.com\",\"url\":\"https:\\\/\\\/www.fi.freelancer.com\",\"pattern\":\"\\\/fi.freelancer.com$\\\/\",\"name\":\"Finland\",\"info\":\"Go to FI site\",\"info_selected\":\"Stay in FI\",\"flag_small\":\"fi.png\",\"flag_big\":\"fi-big.png\",\"sequence\":\"1120\",\"short_name\":\"finland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"53\",\"domain_name\":\"dk.freelancer.com\",\"url\":\"https:\\\/\\\/www.dk.freelancer.com\",\"pattern\":\"\\\/dk.freelancer.com$\\\/\",\"name\":\"Denmark\",\"info\":\"Go to DK site\",\"info_selected\":\"Stay in DK\",\"flag_small\":\"dk.png\",\"flag_big\":\"dk-big.png\",\"sequence\":\"1130\",\"short_name\":\"denmark\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"56\",\"domain_name\":\"freelancer.com.al\",\"url\":\"https:\\\/\\\/www.freelancer.com.al\",\"pattern\":\"\\\/freelancer.com.al$\\\/\",\"name\":\"Albania\",\"info\":\"Go to AL site\",\"info_selected\":\"Stay in AL\",\"flag_small\":\"al.png\",\"flag_big\":\"al-big.png\",\"sequence\":\"1140\",\"short_name\":\"albania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"51\",\"domain_name\":\"freelancer.si\",\"url\":\"https:\\\/\\\/www.freelancer.si\",\"pattern\":\"\\\/freelancer.si$\\\/\",\"name\":\"Slovenia\",\"info\":\"Go to SI site\",\"info_selected\":\"Stay in SI\",\"flag_small\":\"si.png\",\"flag_big\":\"si-big.png\",\"sequence\":\"1150\",\"short_name\":\"slovenia\",\"domain_switcher_region_name\":\"Europe\"}]},{\"name\":\"Asia Pacific\",\"domains\":[{\"id\":\"3\",\"domain_name\":\"freelancer.com.au\",\"url\":\"https:\\\/\\\/www.freelancer.com.au\",\"pattern\":\"\\\/freelancer.com.au$\\\/\",\"name\":\"Australia\",\"info\":\"Go to Australia site\",\"info_selected\":\"Stay in Australia\",\"flag_small\":\"au.png\",\"flag_big\":\"au-big.png\",\"sequence\":\"800\",\"short_name\":\"australia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"2\",\"domain_name\":\"freelancer.co.nz\",\"url\":\"https:\\\/\\\/www.freelancer.co.nz\",\"pattern\":\"\\\/freelancer.co.nz$\\\/\",\"name\":\"New Zealand\",\"info\":\"Go to New Zealand site\",\"info_selected\":\"Stay in New Zealand\",\"flag_small\":\"nz.png\",\"flag_big\":\"nz-big.png\",\"sequence\":\"810\",\"short_name\":\"new-zealand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"5\",\"domain_name\":\"freelancer.hk\",\"url\":\"https:\\\/\\\/www.freelancer.hk\",\"pattern\":\"\\\/freelancer.hk$\\\/\",\"name\":\"Hong Kong\",\"info\":\"Go to HK site\",\"info_selected\":\"Stay in HK\",\"flag_small\":\"hk.png\",\"flag_big\":\"hk-big.png\",\"sequence\":\"820\",\"short_name\":\"hong-kong\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"29\",\"domain_name\":\"freelancer.com.bd\",\"url\":\"https:\\\/\\\/www.freelancer.com.bd\",\"pattern\":\"\\\/freelancer.com.bd$\\\/\",\"name\":\"Bangladesh\",\"info\":\"Go to BD site\",\"info_selected\":\"Stay in BD\",\"flag_small\":\"bd.png\",\"flag_big\":\"bd-big.png\",\"sequence\":\"830\",\"short_name\":\"bangladesh\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"12\",\"domain_name\":\"freelancer.in\",\"url\":\"https:\\\/\\\/www.freelancer.in\",\"pattern\":\"\\\/freelancer.in$\\\/\",\"name\":\"India\",\"info\":\"Go to IN site\",\"info_selected\":\"Stay in IN\",\"flag_small\":\"in.png\",\"flag_big\":\"in-big.png\",\"sequence\":\"840\",\"short_name\":\"india\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"24\",\"domain_name\":\"freelancer.co.id\",\"url\":\"https:\\\/\\\/www.freelancer.co.id\",\"pattern\":\"\\\/freelancer.co.id$\\\/\",\"name\":\"Indonesia\",\"info\":\"Go to ID site\",\"info_selected\":\"Stay in ID\",\"flag_small\":\"id.png\",\"flag_big\":\"id-big.png\",\"sequence\":\"850\",\"short_name\":\"indo\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"41\",\"domain_name\":\"freelancer.jp\",\"url\":\"https:\\\/\\\/www.freelancer.jp\",\"pattern\":\"\\\/freelancer.jp$\\\/\",\"name\":\"Japan\",\"info\":\"Go to JP site\",\"info_selected\":\"Stay in JP\",\"flag_small\":\"jp.png\",\"flag_big\":\"jp-big.png\",\"sequence\":\"860\",\"short_name\":\"japan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"49\",\"domain_name\":\"freelancer.co.kr\",\"url\":\"https:\\\/\\\/www.freelancer.co.kr\",\"pattern\":\"\\\/freelancer.co.kr$\\\/\",\"name\":\"Korea, Republic of\",\"info\":\"Go to KR site\",\"info_selected\":\"Stay in KR\",\"flag_small\":\"kr.png\",\"flag_big\":\"kr-big.png\",\"sequence\":\"865\",\"short_name\":\"korea-republic-of\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"30\",\"domain_name\":\"my.freelancer.com\",\"url\":\"https:\\\/\\\/www.my.freelancer.com\",\"pattern\":\"\\\/my.freelancer.com$\\\/\",\"name\":\"Malaysia\",\"info\":\"Go to MS site\",\"info_selected\":\"Stay in MS\",\"flag_small\":\"ms.png\",\"flag_big\":\"ms-big.png\",\"sequence\":\"870\",\"short_name\":\"malaysia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"20\",\"domain_name\":\"freelancer.pk\",\"url\":\"https:\\\/\\\/www.freelancer.pk\",\"pattern\":\"\\\/freelancer.pk$\\\/\",\"name\":\"Pakistan\",\"info\":\"Go to PK site\",\"info_selected\":\"Stay in PK\",\"flag_small\":\"pk.png\",\"flag_big\":\"pk-big.png\",\"sequence\":\"880\",\"short_name\":\"pakistan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"7\",\"domain_name\":\"freelancer.ph\",\"url\":\"https:\\\/\\\/www.freelancer.ph\",\"pattern\":\"\\\/freelancer.ph$\\\/\",\"name\":\"Philippines\",\"info\":\"Go to PH site\",\"info_selected\":\"Stay in PH\",\"flag_small\":\"ph.png\",\"flag_big\":\"ph-big.png\",\"sequence\":\"890\",\"short_name\":\"philippines\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"38\",\"domain_name\":\"freelancer.cn\",\"url\":\"https:\\\/\\\/www.freelancer.cn\",\"pattern\":\"\\\/freelancer.cn$\\\/\",\"name\":\"P.R. China\",\"info\":\"Go to ZH site\",\"info_selected\":\"Stay in ZH\",\"flag_small\":\"zh.png\",\"flag_big\":\"zh-big.png\",\"sequence\":\"900\",\"short_name\":\"china\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"6\",\"domain_name\":\"freelancer.sg\",\"url\":\"https:\\\/\\\/www.freelancer.sg\",\"pattern\":\"\\\/freelancer.sg$\\\/\",\"name\":\"Singapore\",\"info\":\"Go to SG site\",\"info_selected\":\"Stay in SG\",\"flag_small\":\"sg.png\",\"flag_big\":\"sg-big.png\",\"sequence\":\"910\",\"short_name\":\"singapore\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"44\",\"domain_name\":\"freelancer.co.th\",\"url\":\"https:\\\/\\\/www.freelancer.co.th\",\"pattern\":\"\\\/freelancer.co.th$\\\/\",\"name\":\"Thailand\",\"info\":\"Go to TH site\",\"info_selected\":\"Stay in TH\",\"flag_small\":\"th.png\",\"flag_big\":\"th-big.png\",\"sequence\":\"940\",\"short_name\":\"thailand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"54\",\"domain_name\":\"vn.freelancer.com\",\"url\":\"https:\\\/\\\/www.vn.freelancer.com\",\"pattern\":\"\\\/vn.freelancer.com$\\\/\",\"name\":\"Vietnam\",\"info\":\"Go to VN site\",\"info_selected\":\"Stay in VN\",\"flag_small\":\"vn.png\",\"flag_big\":\"vn-big.png\",\"sequence\":\"950\",\"short_name\":\"vietnam\",\"domain_switcher_region_name\":\"Asia Pacific\"}]},{\"name\":\"Latin America\",\"domains\":[{\"id\":\"18\",\"domain_name\":\"freelancer.com.ar\",\"url\":\"https:\\\/\\\/www.freelancer.com.ar\",\"pattern\":\"\\\/freelancer.com.ar$\\\/\",\"name\":\"Argentina\",\"info\":\"Go to AR site\",\"info_selected\":\"Stay in AR\",\"flag_small\":\"ar.png\",\"flag_big\":\"ar-big.png\",\"sequence\":\"1000\",\"short_name\":\"argentina\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"25\",\"domain_name\":\"br.freelancer.com\",\"url\":\"https:\\\/\\\/www.br.freelancer.com\",\"pattern\":\"\\\/br.freelancer.com$\\\/\",\"name\":\"Brazil\",\"info\":\"Go to BR site\",\"info_selected\":\"Stay in BR\",\"flag_small\":\"br.png\",\"flag_big\":\"br-big.png\",\"sequence\":\"1010\",\"short_name\":\"brazil\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"46\",\"domain_name\":\"freelancer.cl\",\"url\":\"https:\\\/\\\/www.freelancer.cl\",\"pattern\":\"\\\/freelancer.cl$\\\/\",\"name\":\"Chile\",\"info\":\"Go to CL site\",\"info_selected\":\"Stay in CL\",\"flag_small\":\"cl.png\",\"flag_big\":\"cl-big.png\",\"sequence\":\"1020\",\"short_name\":\"chile\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"37\",\"domain_name\":\"freelancer.com.co\",\"url\":\"https:\\\/\\\/www.freelancer.com.co\",\"pattern\":\"\\\/freelancer.com.co$\\\/\",\"name\":\"Colombia\",\"info\":\"Go to CO site\",\"info_selected\":\"Stay in CO\",\"flag_small\":\"co.png\",\"flag_big\":\"co-big.png\",\"sequence\":\"1030\",\"short_name\":\"colombia\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"17\",\"domain_name\":\"freelancer.ec\",\"url\":\"https:\\\/\\\/www.freelancer.ec\",\"pattern\":\"\\\/freelancer.ec$\\\/\",\"name\":\"Ecuador\",\"info\":\"Go to EC site\",\"info_selected\":\"Stay in EC\",\"flag_small\":\"ec.png\",\"flag_big\":\"ec-big.png\",\"sequence\":\"1040\",\"short_name\":\"ecuador\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"15\",\"domain_name\":\"freelancer.mx\",\"url\":\"https:\\\/\\\/www.freelancer.mx\",\"pattern\":\"\\\/freelancer.mx$\\\/\",\"name\":\"Mexico\",\"info\":\"Go to MX site\",\"info_selected\":\"Stay in MX\",\"flag_small\":\"mx.png\",\"flag_big\":\"mx-big.png\",\"sequence\":\"1050\",\"short_name\":\"mexico\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"16\",\"domain_name\":\"freelancer.com.pe\",\"url\":\"https:\\\/\\\/www.freelancer.com.pe\",\"pattern\":\"\\\/freelancer.com.pe$\\\/\",\"name\":\"Peru\",\"info\":\"Go to PE site\",\"info_selected\":\"Stay in PE\",\"flag_small\":\"pe.png\",\"flag_big\":\"pe-big.png\",\"sequence\":\"1070\",\"short_name\":\"peru\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"31\",\"domain_name\":\"freelancer.uy\",\"url\":\"https:\\\/\\\/www.freelancer.uy\",\"pattern\":\"\\\/freelancer.uy$\\\/\",\"name\":\"Uruguay\",\"info\":\"Go to UY site\",\"info_selected\":\"Stay in UY\",\"flag_small\":\"uy.png\",\"flag_big\":\"uy-big.png\",\"sequence\":\"1080\",\"short_name\":\"uruguay\",\"domain_swit:cher_region_name\":\"Latin America\"}]}]}}\n"}]},{"id":"9271508","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9271507","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"95","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"95","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Reference, Path, Query, Action } from '.\/store'\n+import { backend } from '.\/backend';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+export interface ListOptions {\n+ query: QueryObservable;\n+}\n+\n+export interface QueryObservable {\n+ limit?: number|Observable<number>;\n+ offset?: number|Observable<number>;\n+}\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<RootModel>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {}\n+\n+ list<a extends keyof RootModel, b extends keyof RootModel[a]>(\n+ key1: a,\n+ key2: b|Observable<b>,\n+ options?: ListOptions\n+ ): ListObservable<Array<RootModel[a][b]>> {\n+\n+ const pathStream = Observable.combineLatest([\n+ (key1 instanceof Observable) ? key1 : Observable.of(key1),\n+ (key2 instanceof Observable) ? key2 : Observable.of(key2)\n+ ]);\n+\n+ const query = options ? options.query : {};\n+ const queryStream = Observable.combineLatest([\n+ (query.limit instanceof Observable) ? query.limit : Observable.of(query.limit),\n+ (query.offset instanceof Observable) ? query.offset : Observable.of(query.offset)\n+ ], (limit: number, offset: number) => ({ limit, offset }));\n+\n+ const refStream = Observable.combineLatest(\n+ [pathStream, queryStream],\n+ (path: Path, query: Query): Reference => ({path, query})\n+ )\n+ .multicast(() => new ReplaySubject(1))\n+ .refCount();\n+\n+ const fetchStream = refStream\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ if (backend[path[0]] && backend[path[0]].fetch) {\n+ return Observable.of((<any>backend)[path[0]].fetch(path[1], query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => {\n+ this.store.dispatch(<Action>{\n+ type: 'API_FETCH_SUCCESS',\n+ payload: { data, ref }\n+ })\n+ })\n+ .mapTo({path, query});\n+ } else {\n+ return Observable.empty();\n+ }\n+ });\n+\n+ \/\/ TODO: WebSocket -> liveStream\n+\n+ return new ListObservable(refStream, this.apiHttp, this.store,\n+ Observable.merge(refStream, fetchStream)\n+ .switchMap(({path, query}: any) =>\n+ this.store.pluck(...path)\n+ )\n+ .distinctUntilChanged()\n+ .map((data: any) => {\n+ if (data && data.lists) {\n+ \t\t\t\t\treturn (<any>data).lists['default']\n+ \t\t\t\t\t .slice(query.offset || 0)\n+ \t\t\t\t\t .map((id: any) => (<any>data).entities[<string>id]);\n+ } else {\n+ return [];\n+ }\n+ })\n+ );\n+\n+ }\n+\n+ \/\/ TODO: object() => new ObjectObservable()\n+\n+}\n"}]},{"id":"9271506","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5,\n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9271505","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9271504","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/backend.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Backend {\n+ fetch?: (key: string, query: any) => {\n+ endpoint: string;\n+ params: {\n+ [key: string]: string|number;\n+ };\n+ },\n+ post?: (key: string) => {\n+ endpoint: string;\n+ }\n+};\n+\n+export const backend: { [k: string]: Backend } = {\n+ threads: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/threads`,\n+ params: {\n+ unread_count: 'true',\n+ last_message: 'true',\n+ message_details: 'true',\n+ context_details: 'true',\n+ user_details: 'true',\n+ limit: query.limit\n+ }\n+ })\n+ },\n+ messages: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/messages`,\n+ params: {\n+ 'threads[]': key,\n+ }\n+ }),\n+ post: (key) => ({\n+ endpoint: `messages\/0.1\/threads\/${key}\/messages\/`,\n+ params: {\n+ thread_id: key\n+ }\n+ })\n+ }\n+};\n"}]},{"id":"9271503","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.params)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ post(config: any, payload: Object): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.post(`${this.config.apiBaseUrl}\/${config.endpoint}`,\n+ this.serialize({ ...payload, ...config.params }), {\n+ headers: authHeader,\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid , token}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${uid};${token}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ const params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ params.set('compact', 'true');\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9271502","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9271501","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n"}]},{"id":"9271500","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9271499","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9271498","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ uid: number;\n+ token: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const uid = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10);\n+ const token = this.cookies.get(this.authConfig.authHashCookie);\n+ this.next({ uid, token });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9271497","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n"}]},{"id":"9271496","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9271495","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-qg5n2vf3rctc4v2fj2tp"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271494","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9271493","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888 -ssl\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.1\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9271492","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9271491","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9271490","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9271489","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9271488","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+This project was generated with [Angular CLI](https:\/\/github.com\/angular\/angular-cli) version 1.0.0-rc.0.\n+\n+## Development server\n+Run `ng serve` for a dev server. Navigate to `http:\/\/localhost:4200\/`. The app will automatically reload if you change any of the source files.\n+\n+## Code scaffolding\n+\n+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive\/pipe\/service\/class\/module`.\n+\n+## Build\n+\n+Run `ng build` to build the project. The build artifacts will be stored in the `dist\/` directory. Use the `-prod` flag for a production build.\n+\n+## Running unit tests\n+\n+Run `ng test` to execute the unit tests via [Karma](https:\/\/karma-runner.github.io).\n+\n+## Running end-to-end tests\n+\n+Run `ng e2e` to execute the end-to-end tests via [Protractor](http:\/\/www.protractortest.org\/).\n+Before running the tests make sure you are serving the app via `ng serve`.\n+\n+## Further help\n+\n+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https:\/\/github.com\/angular\/angular-cli\/blob\/master\/README.md).\n"}]},{"id":"9271487","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6\n"}]},{"id":"9271486","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9271485","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9271484","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9271483","metadata":{"line:first":722},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"945","newLength":"946","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?mobile=true permanent;\n rewrite ^\/semm\/$ https:\/\/$host\/find\/?mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/activate.php \/local\/activate.php last;\n rewrite ^\/local\/onSignup.php \/local\/onSignup.php last;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n"}]},{"id":"9271482","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9271481","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9271480","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9271479","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271478","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-list.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271477","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9271476","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-item.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9271475","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Input } from '@angular\/core';\n import { Thread } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-item',\n template: `\n <div>{{ thread | json }}<div>\n `,\n styleUrls: ['.\/thread-item.component.less'],\n })\n export class ThreadItemComponent {\n @Input() thread: Thread;\n }\n"}]},{"id":"9271474","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":["public\/static\/modules\/messaging\/messaging.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9271473","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n import { ThreadListComponent } from '.\/thread-list.component';\n import { ThreadItemComponent } from '.\/thread-item.component';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n ],\n declarations: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n exports: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class MessagingModule {}\n"}]},{"id":"9271472","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":["public\/static\/modules\/messaging\/index.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9271471","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/messaging\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/messaging.module';\n"}]},{"id":"9271470","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9271469","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9271468","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9271467","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9271466","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { RouterModule, Routes } from '@angular\/router';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n-\n-const messagingInboxRoutes: Routes = [\n- {\n- path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forChild(messagingInboxRoutes),\n- ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class MessagingInboxRoutingModule { }\n"}]},{"id":"9271465","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9271464","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9271463","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9271462","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9271461","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9271460","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9271459","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9271458","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9271457","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9271456","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9271455","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9271454","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9271453","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9271452","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9271451","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9271450","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9271449","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9271448","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9271447","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9271446","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9271445","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"371","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9271444","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"10","delLines":"27","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1236","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"^2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9271443","metadata":{"line:first":1},"oldPath":null,"currentPath":".angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"gaf-app\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"2a467dc6590b787ebbab072ea11be0d4ee62956b":{"commit":"2a467dc6590b787ebbab072ea11be0d4ee62956b","tree":"498a3e87259e5c1c160463f1077774900b220322","parents":["131f7a148dcfbcadbd3df6d177b7882b006f73f0"],"time":"1488990658","author":"Laurent Goudet","summary":"pluck pluck plucking","message":"pluck pluck plucking","authorEmail":"laurent@freelancer.com"},"131f7a148dcfbcadbd3df6d177b7882b006f73f0":{"commit":"131f7a148dcfbcadbd3df6d177b7882b006f73f0","tree":"4f17b76b5c288f0726738cb8dbe8b91c00286237","parents":["79b6461eb65a7d3a9dd7a5120496b34aed731aea"],"time":"1488990284","author":"Laurent Goudet","summary":"more improvements","message":"more improvements","authorEmail":"laurent@freelancer.com"},"79b6461eb65a7d3a9dd7a5120496b34aed731aea":{"commit":"79b6461eb65a7d3a9dd7a5120496b34aed731aea","tree":"35b936db1e49a3aa6e0486031a1d70bb98fc16fc","parents":["a3f34334da468fa18fce95cfdd6d07057d1c3e88"],"time":"1488986050","author":"Laurent Goudet","summary":"Update cli to rc1","message":"Update cli to rc1","authorEmail":"laurent@freelancer.com"},"a3f34334da468fa18fce95cfdd6d07057d1c3e88":{"commit":"a3f34334da468fa18fce95cfdd6d07057d1c3e88","tree":"41cd820055f91b119d9c8a797bdbd83791eca5f0","parents":["2b096f05e8550a621882e4da5e8d3b1a5f3ddae4"],"time":"1488985757","author":"Laurent Goudet","summary":"Finish renaming","message":"Finish renaming","authorEmail":"laurent@freelancer.com"},"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4":{"commit":"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4","tree":"579fb8566e194b3d80a6543b304c56ffc9263a7a","parents":["203a6aa47f50467ad46e556442f65d2c5aa574c6"],"time":"1488984749","author":"Laurent Goudet","summary":"more renaming","message":"more renaming","authorEmail":"laurent@freelancer.com"},"203a6aa47f50467ad46e556442f65d2c5aa574c6":{"commit":"203a6aa47f50467ad46e556442f65d2c5aa574c6","tree":"3bb4fc3a032bebb279f521ab7fb269f6aba8c600","parents":["99562cd0ca1d33a5132cb132bfb5a79f46c1a057"],"time":"1488978328","author":"Laurent Goudet","summary":"it works","message":"it works","authorEmail":"laurent@freelancer.com"},"99562cd0ca1d33a5132cb132bfb5a79f46c1a057":{"commit":"99562cd0ca1d33a5132cb132bfb5a79f46c1a057","tree":"a90b746681e137aa40e21d6aa2e82be7022cb3d9","parents":["8c26bbd83a354887739377f4beb4a3e82e3905e2"],"time":"1488903326","author":"Laurent Goudet","summary":"bugz","message":"bugz","authorEmail":"laurent@freelancer.com"},"8c26bbd83a354887739377f4beb4a3e82e3905e2":{"commit":"8c26bbd83a354887739377f4beb4a3e82e3905e2","tree":"32398a01d49efebce64b2f14d55cfdf0babc5dc5","parents":["fca85f7440b205d1b05d860cae596e72cae65150"],"time":"1488902573","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"fca85f7440b205d1b05d860cae596e72cae65150":{"commit":"fca85f7440b205d1b05d860cae596e72cae65150","tree":"0b44b65f63fe3bd3a590632ccb4681afd1de402c","parents":["4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c"],"time":"1488819407","author":"Laurent Goudet","summary":"Bugz fixing","message":"Bugz fixing","authorEmail":"laurent@freelancer.com"},"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c":{"commit":"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c","tree":"e86302ebe2ecb73a3e4893f93119efd6f1ea458c","parents":["c3815d83d0278276714c527df4b976ff2c29aa19"],"time":"1488818884","author":"Laurent Goudet","summary":"Dynamic queries handling","message":"Dynamic queries handling","authorEmail":"laurent@freelancer.com"},"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"700395":{"id":"700395","revisionID":"56417","dateCreated":"1488990556","dateModified":"1488990559","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - it works","unitStatus":"1","lintStatus":"3","changes":[{"id":"9271442","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5280","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5280","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n"}]},{"id":"9271441","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271440","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9271439","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9271438","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.key","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN RSA PRIVATE KEY-----\n+MIICWwIBAAKBgQCmipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LV\n+g\/kgt79am1bnF+\/HF880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R\n+1uHyD\/46sYtMejy3n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQAB\n+AoGATqG34hCSf11mWDUPNXjuCcz8eLF8Ugab\/pMngrPR2OWOSKue4y73jmITYBVd\n+96iOlqMAOxpmfFp\/R81PIHdi++Bax1NfSBT8tK0U7HHzkbHEXyvHiBSug78Y14h8\n+Y\/NMZXEvVapY7lapr5ZgOSf2rcKOlceMRsoohl6bGc+55BECQQDPZTw5WxDDe7\/W\n+oYzHy7abLw+A92cP8A6qlwXBik9ko6jtYXvoI454OIr6RsHoFPU9bUkx5G1fvOUZ\n+J3sxfxMZAkEAzZJEwcvmxHizX\/2NZZ8LvVyWGpao07bBcAEvDXDZFOZqKUujukOe\n+iilQD6JZDJTmW9RJmOgdQKeL9ZaTlX3MqwJASMJrbnPUXcB8fQAQM8f0OF06QzSI\n+o77EZnS1QEEVuWjxStZ4ceiHgwXTPBq2zIUNxI8irq5E8OGEPl7riWHbgQJARzqL\n+QGsaRrFb1cLRH4kAVFikWgoh7VnBpMGEQC\/9x9QerLhcvsl3QYAXEZO7LzTYrLDd\n+33Ft0V08jZfjA0VXiQJAOwX6glfDKf79AK1sifFQc\/v0Yu87LIOAwp0zLlsnO0Q9\n+xQV3TdjlNQebfTG+Uw1tmbcCb2wcGFfD199IHpAzIA==\n+-----END RSA PRIVATE KEY-----\n"}]},{"id":"9271437","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/ssl\/server.crt","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+-----BEGIN CERTIFICATE-----\n+MIICAzCCAWwCCQDlm49KXF45gzANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJB\n+VTETMBEGA1UECBMKU29tZS1TdGF0ZTEQMA4GA1UEChMHR3J1bnRKUzEQMA4GA1UE\n+AxMHMC4wLjAuMDAeFw0xNDAyMTkyMzE1NDRaFw0xNTAyMTkyMzE1NDRaMEYxCzAJ\n+BgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMRAwDgYDVQQKEwdHcnVudEpT\n+MRAwDgYDVQQDEwcwLjAuMC4wMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm\n+ipCqKyQ6aJJiVMvXZVoTw9sEC5dKFA35n15r9fG565\/Zj8LVg\/kgt79am1bnF+\/H\n+F880f8kfDsgEaAC1qzo8XU8yqt+UoFOB2Ncw76g6B6ZiuC2R1uHyD\/46sYtMejy3\n+n8EcTk9jNmNlglF6Ig6\/hWcz+0XH6QjJT0lAM06tswIDAQABMA0GCSqGSIb3DQEB\n+BQUAA4GBADnTBlN7+Aa8zj2zsUBSUv9w7iYut3ZDvrEY+IJt8EurwA6+Q7rQqVsY\n+an5ztiEESriWvqNIfvWb+Yekhv9sISJFMfApVbimmT6QseQcFEIlRNW5cfukHQVH\n+9dBI7upQO2vN7N9ABo4a3aBANMBxIvCnE+adiqNOTJF\/8qkiAFY9\n+-----END CERTIFICATE-----\n"}]},{"id":"9271436","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9271435","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9271434","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9271433","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9271432","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9271431","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271430","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9271429","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9271428","metadata":{"old:file:size":2238,"old:file:mime-type":"image\/x-icon","old:binary-phid":"PHID-FILE-3yuuaa5p7hn7srjpktkd"},"oldPath":null,"currentPath":"public\/favicon.ico","awayPaths":["webapp\/src\/favicon.ico"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271427","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-rynfc7grvsiabzsdep5f"},"oldPath":"public\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271426","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const environment = {\n+ production: false,\n+ gafBaseUrl: 'https:\/\/laurent.syd1.fln-dev.net',\n+ authConfig: {\n+ baseUrl: `https:\/\/laurent.syd1.fln-dev.net\/auth`,\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/api`,\n+ ajaxBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/ajax`,\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n"}]},{"id":"9271425","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271424","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9271423","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271422","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+import 'rxjs\/add\/observable\/merge';\n+import 'rxjs\/add\/observable\/from';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/merge';\n+import 'rxjs\/add\/operator\/mergeMap';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/pluck';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n+import 'rxjs\/add\/operator\/multicast';\n+import 'rxjs\/add\/operator\/scan';\n+import 'rxjs\/add\/operator\/take';\n"}]},{"id":"9271421","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.assign(`${environment.gafBaseUrl}${state.url}`);\n+ return false;\n+ }\n+}\n"}]},{"id":"9271420","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"55","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"55","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ template: `\n+ <div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+\n+ <!-- <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>-->\n+ <\/div>\n+ `,\n+})\n+export class ThreadComponent {\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.messages = this.datastore.list(\n+ 'messages',\n+ this.route.params.map(({threadId}) => threadId), {\n+ query: {\n+ limit: 10\n+ }\n+ }\n+ );\n+ }\n+\n+ sendMessage(message: string) {\n+ this.auth.switchMap(({uid}) =>\n+ this.messages.push({\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ busy: true,\n+ from_user: uid.toString()\n+ })\n+ ).toPromise();\n+ }\n+}\n"}]},{"id":"9271419","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9271418","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9271417","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread.thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9271416","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9271415","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+\n+ <fl-user-avatar [src]=\"thread.owner.avatar\"\n+ class=\"avatar\">\n+ <\/fl-user-avatar>\n+ <div class=\"body\">\n+ <div class=\"body-content-username\"\n+ *ngFor=\"let member of thread.members; let $last = last;\">\n+ {{ member.username }}<span *ngIf=\"!$last\">,<\/span>\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{ thread.message.message }}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9271414","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"33","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9271413","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9271412","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9271411","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9271410","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9271409","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9271408","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9271407","metadata":{"line:first":1,"copy:lines":{"47":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"48":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"49":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"50":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"50","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"50","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ThreadComponent,\n+ EmptyThreadComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n"}]},{"id":"9271406","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"70","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"70","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router';\n+import { Datastore, ListObservable, Thread } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <router-outlet><\/router-outlet>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ \/\/threadsUnreadCount: ObjectObservable<ThreadUnreadCount>;\n+ threadsLimit = new Subject<number>();\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ const uid = this.auth.map(({uid}) => uid.toString());\n+ this.threads = this.datastore.list('threads', uid, {\n+ query: {\n+ limit: this.threadsLimit\n+ .startWith(10)\n+ .scan((acc, curr) => acc + curr)\n+ }\n+ }\n+ );\n+ \/\/this.threadsUnreadCount = this.datastore.list('threadsUnreadCount', uid);\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.next(count);\n+ }\n+\n+ createThread() {\n+ \/\/this.threads.push(...);\n+ }\n+\n+}\n"}]},{"id":"9271405","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9271404","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",3,"-"],"7":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",6,"-"],"8":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",7,"-"],"9":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",8,"-"],"10":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",9,"-"],"24":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",16,"-"],"25":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",17,"-"],"26":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",18,"-"],"27":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",19,"-"],"28":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",20,"-"],"29":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",21,"-"],"30":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",25,"-"],"31":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",26,"-"],"32":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",27,"-"],"33":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",28,"-"],"34":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",29,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { RouterModule, Routes } from '@angular\/router';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { AuthGuard } from '..\/auth-guard.service';\n+\n+const messagingInboxRoutes: Routes = [\n+ {\n+ path: '',\n+ canActivate: [AuthGuard],\n+ component: MessagingInboxComponent,\n+ children: [\n+ {\n+ path: '',\n+ component: EmptyThreadComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: ThreadComponent\n+ }\n+ ]\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forChild(messagingInboxRoutes),\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class MessagingInboxRoutingModule { }\n"}]},{"id":"9271403","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message of messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9271402","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9271401","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9271400","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9271399","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message = new EventEmitter<string>();\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9271398","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9271397","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9271396","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9271395","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/empty-thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: `\n+ <div>\n+ NO THREAD SELECTED\n+ <\/div>\n+ `,\n+})\n+export class EmptyThreadComponent {\n+\n+}\n"}]},{"id":"9271394","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9271393","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9271392","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9271391","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9271390","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.uid) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9271389","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9271388","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9271387","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9271386","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"35","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"35","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n"}]},{"id":"9271385","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9271384","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/user-avatar.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular\/core';\n+@Component({\n+ selector: 'fl-user-avatar',\n+ template: `\n+ <img [src]=\"avatarUrl\" \/>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class UserAvatarComponent implements OnChanges {\n+ private avatarUrl: string;\n+ @Input() src: string;\n+\n+ constructor() {}\n+\n+ ngOnChanges() {\n+ if (this.src) {\n+ this.avatarUrl = `https:\/\/laurent.syd1.fln-dev.net${this.src}`;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9271383","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271382","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n+import { UserAvatarComponent } from '.\/user-avatar.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9271381","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9271380","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9271379","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9271378","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+\n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+\n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+\n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+\n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+\n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+\n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver;\n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9271377","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9271376","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9271375","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9271374","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9271373","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9271372","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9271371","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9271370","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9271369","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use\n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+\n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9271368","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/verification-banner\/verificationBanner.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface VerificationBanners {\n+ [userId: string]: VerificationBanner\n+}\n+\n+export interface VerificationBanner {\n+ email: string;\n+ params: string; \/\/ \"id=15540180&key=8656f81647a32f8331bea7921d0cef14dc9929e8\"\n+ showPhoneVerifyBanner: boolean;\n+ show_resend_btn: boolean;\n+ type_of_notif: string; \/\/ \"email\"\n+ username: string; \/\/ \"laurent\"\n+}\n"}]},{"id":"9271367","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9271366","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Thread, ThreadUnreadCount } from '.\/thread.model';\n+\n+export const threadReducer = (\n+ state: Readonly<{ [userId: string]: Entities<Thread> }> = {},\n+ action: Action\n+): Readonly<{ [userId: string]: Entities<Thread> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ console.log('threadReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ Denoramlize the Thread API response\n+ const contextDetails = data.context_details;\n+ const users = data.users;\n+ const threads = data.threads.reduce((acc: any, thread: any) => {\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.project = contextDetails.projects[context.id];\n+ } else {\n+ context.contest = contextDetails.contests[context.id];\n+ }\n+ context.id = undefined;\n+ const members = thread.thread.members.map((memberId: number) => {\n+ return { ...users[memberId], ...{\n+ \/\/ Avatar CDN URLs returned by the API are crap\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ });\n+ const owner = { ...users[thread.thread.owner], ...{\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ const threadInner = { ...thread.thread, context, members, owner };\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ acc[thread.id] = { ...thread , ...{ thread: threadInner }, messages };\n+ return acc;\n+ }, {});\n+\n+ return mergeEntities(state, threads, ref);\n+\n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n+export const threadUnreadCountReducer =\n+ (state: Entities<ThreadUnreadCount> = {}, action: Action): Entities<ThreadUnreadCount> => {\n+ if (action.payload && action.payload.ref.path[0] === 'threads') {\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ return mergeEntities(state, data.unread_thread_count, ref);\n+ return state;\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9271365","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface ThreadUnreadCount {\n+ unread_thread_count: number;\n+}\n+\n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ type: 'project' | 'contest';\n+ contest?: any;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD\n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9271364","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"73","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"73","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+import { RootModel } from '.\/root.model';\n+\n+import { Thread, ThreadUnreadCount } from '.\/thread\/thread.model';\n+import { threadReducer, threadUnreadCountReducer } from '.\/thread\/thread.reducer';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+\n+import { Observable } from 'rxjs\/Observable';\n+\n+export interface Reference {\n+ path: Path;\n+ query: Query;\n+}\n+\n+export type Path = [keyof RootModel, string];\n+\n+export interface Query {\n+ limit?: number;\n+ offset?: number;\n+}\n+\n+export interface Action {\n+ type: ActionType;\n+ payload?: {\n+ data: any;\n+ ref: Reference;\n+ }\n+}\n+\n+export type ActionType = 'API_FETCH_SUCCESS'\n+ | 'API_POST'\n+ | 'API_POST_SUCCESS';\n+\n+export interface Entities<T> {\n+ entities?: {\n+ [id: string]: T;\n+ };\n+ lists?: {\n+ [query: string]: T[];\n+ };\n+};\n+\n+export const mergeEntities = (state: any, entities: any, ref: Reference) => {\n+ const data = state[ref.path[1]] || {};\n+ const query = 'default';\n+ return { ...state, ...{\n+ [ref.path[1]]: {\n+ entities: {\n+ ...data.entities,\n+ ...entities\n+ },\n+ lists: {\n+ ...data.lists,\n+ ...{\n+ [query]: Object.keys(entities).reduce((acc, id, index) => {\n+ acc[(ref.query.offset || 0) + index] = id;\n+ return acc;\n+ }, data.lists ? ([...data.lists[query]] || []) : [])\n+ }\n+ }\n+ }\n+ }};\n+};\n+\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ threadsUnreadCount: threadUnreadCountReducer,\n+ messages: messageReducer,\n+});\n"}]},{"id":"9271363","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/root.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface RootModel {\n+ threads: {\n+ [userId: string]: Thread;\n+ },\n+ threadsUnreadCount: {\n+ [userId: string]: ThreadUnreadCount\n+ },\n+ messages: {\n+ [threadId: string]: Message;\n+ }\n+};\n"}]},{"id":"9271362","metadata":[],"oldPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","currentPath":"webapp\/src\/app\/@shared\/datastore\/object-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271361","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Message } from '.\/message.model';\n+\n+export const messageReducer = (\n+ state: Readonly<{ [threadId: string]: Entities<Message> }> = {},\n+ action: Action\n+): Readonly<{ [threadId: string]: Entities<Message> }> => {\n+\n+ if (action.payload && action.payload.ref.path[0] === 'messages') {\n+ console.log('messageReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS': {\n+ const { data, ref } = action.payload;\n+ const messages = data.messages.reduce((acc: any, message: any) => {\n+ acc[message.id] = message;\n+ return acc;\n+ }, {});\n+ return mergeEntities(state, messages, ref);\n+ }\n+\n+ case 'API_POST': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ case 'API_POST_SUCCESS': {\n+ const { data: message, ref } = action.payload;\n+ return mergeEntities(state, { [message.id]: message }, ref);\n+ }\n+\n+ \/*case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }*\/\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9271360","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n"}]},{"id":"9271359","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9271358","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"45","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"45","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Reference, Action } from '.\/store';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+import { backend } from '.\/backend';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private ref$: any,\n+ private apiHttp: ApiHttp,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.ref$, this.apiHttp, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ push(body: Object): Observable<boolean> {\n+ console.log('push', body);\n+ return this.ref$.take(1)\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ return Observable.of((<any>backend)[path[0]].post(path[1]))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST',\n+ payload: { data, ref }\n+ }))\n+ .switchMap((config) => this.apiHttp.post(config, body))\n+ .do((data) => this.store.dispatch(<Action>{\n+ type: 'API_POST_SUCCESS',\n+ payload: { data, ref }\n+ }))\n+ })\n+ .mapTo(true)\n+ }\n+\n+}\n"}]},{"id":"9271357","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/languages-domains\/languages-domains.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface LanguagesDomains {\n+\n+\n+}\n+\n+{\"status\":\"success\",\"data\":{\"languages\":[{\"id\":\"4\",\"code\":\"af\",\"name\":\"Afrikaans\",\"englishName\":\"Afrikaans\",\"iso6391\":\"af\",\"iso6392\":\"afr\",\"active\":true},{\"id\":\"19\",\"code\":\"bn\",\"name\":\"\\u09ac\\u09be\\u0982\\u09b2\\u09be\",\"englishName\":\"Bengali\",\"iso6391\":\"bn\",\"iso6392\":\"ben\",\"active\":true},{\"id\":\"23\",\"code\":\"ca\",\"name\":\"Catal\\u00e0\",\"englishName\":\"Catalan\",\"iso6391\":\"ca\",\"iso6392\":\"cat\",\"active\":true},{\"id\":\"28\",\"code\":\"cs\",\"name\":\"\\u010ce\\u0161tina\",\"englishName\":\"Czech\",\"iso6391\":\"cs\",\"iso6392\":\"ces\",\"active\":true},{\"id\":\"32\",\"code\":\"da\",\"name\":\"Dansk\",\"englishName\":\"Danish\",\"iso6391\":\"da\",\"iso6392\":\"dan\",\"active\":true},{\"id\":\"33\",\"code\":\"de\",\"name\":\"Deutsch\",\"englishName\":\"German\",\"iso6391\":\"de\",\"iso6392\":\"deu\",\"active\":true},{\"id\":\"37\",\"code\":\"el\",\"name\":\"\\u03b5\\u03bb\\u03bb\\u03b7\\u03bd\\u03b9\\u03ba\\u03ac\",\"englishName\":\"Greek, Modern\",\"iso6391\":\"el\",\"iso6392\":\"ell\",\"active\":true},{\"id\":\"38\",\"code\":\"en\",\"name\":\"English\",\"englishName\":\"English\",\"iso6391\":\"en\",\"iso6392\":\"eng\",\"active\":true},{\"id\":\"40\",\"code\":\"es\",\"name\":\"Espa\\u00f1ol\",\"englishName\":\"Spanish\",\"iso6391\":\"es\",\"iso6392\":\"spa\",\"active\":true},{\"id\":\"45\",\"code\":\"fi\",\"name\":\"Suomi\",\"englishName\":\"Finnish\",\"iso6391\":\"fi\",\"iso6392\":\"fin\",\"active\":true},{\"id\":\"46\",\"code\":\"fil\",\"name\":\"Filipino\",\"englishName\":\"Filipino\",\"iso6391\":\"\",\"iso6392\":\"fil\",\"active\":true},{\"id\":\"49\",\"code\":\"fr\",\"name\":\"Fran\\u00e7ais\",\"englishName\":\"French\",\"iso6391\":\"fr\",\"iso6392\":\"fra\",\"active\":true},{\"id\":\"60\",\"code\":\"hi\",\"name\":\"\\u0939\\u093f\\u0928\\u094d\\u0926\\u0940\",\"englishName\":\"Hindi\",\"iso6391\":\"hi\",\"iso6392\":\"hin\",\"active\":true},{\"id\":\"64\",\"code\":\"hu\",\"name\":\"Magyar\",\"englishName\":\"Hungarian\",\"iso6391\":\"hu\",\"iso6392\":\"hun\",\"active\":true},{\"id\":\"68\",\"code\":\"id\",\"name\":\"Bahasa Indonesia\",\"englishName\":\"Indonesian\",\"iso6391\":\"id\",\"iso6392\":\"ind\",\"active\":true},{\"id\":\"75\",\"code\":\"it\",\"name\":\"Italiano\",\"englishName\":\"Italian\",\"iso6391\":\"it\",\"iso6392\":\"ita\",\"active\":true},{\"id\":\"77\",\"code\":\"ja\",\"name\":\"\\u65e5\\u672c\\u8a9e\",\"englishName\":\"Japanese\",\"iso6391\":\"ja\",\"iso6392\":\"jpn\",\"active\":true},{\"id\":\"87\",\"code\":\"ko\",\"name\":\"\\ud55c\\uad6d\\uc5b4\",\"englishName\":\"Korean\",\"iso6391\":\"ko\",\"iso6392\":\"kor\",\"active\":true},{\"id\":\"109\",\"code\":\"ms\",\"name\":\"Bahasa Malaysia\",\"englishName\":\"Malay\",\"iso6391\":\"ms\",\"iso6392\":\"msa\",\"active\":true},{\"id\":\"113\",\"code\":\"nb\",\"name\":\"Norsk-Bokm\\u00e5l\",\"englishName\":\"Norwegian Bokm\\u00e5l\",\"iso6391\":\"nb\",\"iso6392\":\"nob\",\"active\":true},{\"id\":\"118\",\"code\":\"nl\",\"name\":\"Nederlands\",\"englishName\":\"Dutch\",\"iso6391\":\"nl\",\"iso6392\":\"nld\",\"active\":true},{\"id\":\"132\",\"code\":\"pl\",\"name\":\"Polski\",\"englishName\":\"Polish\",\"iso6391\":\"pl\",\"iso6392\":\"pol\",\"active\":true},{\"id\":\"134\",\"code\":\"pt\",\"name\":\"Portugu\\u00eas\",\"englishName\":\"Portuguese\",\"iso6391\":\"pt\",\"iso6392\":\"por\",\"active\":true},{\"id\":\"138\",\"code\":\"ro\",\"name\":\"Rom\\u00e2n\\u0103\",\"englishName\":\"Romanian\",\"iso6391\":\"ro\",\"iso6392\":\"ron\",\"active\":true},{\"id\":\"139\",\"code\":\"ru\",\"name\":\"\\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439\",\"englishName\":\"Russian\",\"iso6391\":\"ru\",\"iso6392\":\"rus\",\"active\":true},{\"id\":\"148\",\"code\":\"sl\",\"name\":\"Sloven\\u0161\\u010dina\",\"englishName\":\"Slovenian\",\"iso6391\":\"sl\",\"iso6392\":\"slv\",\"active\":true},{\"id\":\"152\",\"code\":\"sq\",\"name\":\"Shqip\",\"englishName\":\"Albanian\",\"iso6391\":\"sq\",\"iso6392\":\"sqi\",\"active\":true},{\"id\":\"157\",\"code\":\"sv\",\"name\":\"Svenska\",\"englishName\":\"Swedish\",\"iso6391\":\"sv\",\"iso6392\":\"swe\",\"active\":true},{\"id\":\"158\",\"code\":\"sw\",\"name\":\"Kiswahili\",\"englishName\":\"Swahili\",\"iso6391\":\"sw\",\"iso6392\":\"swa\",\"active\":true},{\"id\":\"163\",\"code\":\"th\",\"name\":\"\\u0e20\\u0e32\\u0e29\\u0e32\\u0e44\\u0e17\\u0e22\",\"englishName\":\"Thai\",\"iso6391\":\"th\",\"iso6392\":\"tha\",\"active\":true},{\"id\":\"171\",\"code\":\"tr\",\"name\":\"T\\u00fcrk\\u00e7e\",\"englishName\":\"Turkish\",\"iso6391\":\"tr\",\"iso6392\":\"tur\",\"active\":true},{\"id\":\"178\",\"code\":\"uk\",\"name\":\"\\u0423\\u043a\\u0440\\u0430\\u0457\\u043d\\u0441\\u044c\\u043a\\u0430\",\"englishName\":\"Ukrainian\",\"iso6391\":\"uk\",\"iso6392\":\"ukr\",\"active\":true},{\"id\":\"182\",\"code\":\"vi\",\"name\":\"Ti\\u1ebfng Vi\\u1ec7t\",\"englishName\":\"Vietnamese\",\"iso6391\":\"vi\",\"iso6392\":\"vie\",\"active\":true},{\"id\":\"190\",\"code\":\"zh\",\"name\":\"\\u4e2d\\u6587(\\u7b80\\u4f53)\",\"englishName\":\"Chinese\",\"iso6391\":\"zh\",\"iso6392\":\"zho\",\"active\":true}],\"domains\":[{\"name\":\"North America\",\"domains\":[{\"id\":\"1\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\",\"pattern\":\"\\\/freelancer.com$\\\/\",\"name\":\"US (International)\",\"info\":\"Go to global site\",\"info_selected\":\"Stay in US\",\"flag_small\":\"us.png\",\"flag_big\":\"us-big.png\",\"sequence\":\"200\",\"short_name\":\"usa\",\"domain_switcher_region_name\":\"North America\",\"current\":true},{\"id\":\"9\",\"domain_name\":\"freelancer.ca\",\"url\":\"https:\\\/\\\/www.freelancer.ca\",\"pattern\":\"\\\/freelancer.ca$\\\/\",\"name\":\"Canada\",\"info\":\"Go to CA site\",\"info_selected\":\"Stay in CA\",\"flag_small\":\"ca.png\",\"flag_big\":\"ca-big.png\",\"sequence\":\"210\",\"short_name\":\"canada\",\"domain_switcher_region_name\":\"North America\"},{\"id\":\"13\",\"domain_name\":\"freelancer.com.jm\",\"url\":\"https:\\\/\\\/www.freelancer.com.jm\",\"pattern\":\"\\\/freelancer.com.jm$\\\/\",\"name\":\"Jamaica\",\"info\":\"Go to JM site\",\"info_selected\":\"Stay in JM\",\"flag_small\":\"jm.png\",\"flag_big\":\"jm-big.png\",\"sequence\":\"220\",\"short_name\":\"jamaica\",\"domain_switcher_region_name\":\"North America\"}]},{\"name\":\"Africa\",\"domains\":[{\"id\":\"11\",\"domain_name\":\"freelancer.co.za\",\"url\":\"https:\\\/\\\/www.freelancer.co.za\",\"pattern\":\"\\\/freelancer.co.za$\\\/\",\"name\":\"South Africa\",\"info\":\"Go to ZA site\",\"info_selected\":\"Stay in ZA\",\"flag_small\":\"za.png\",\"flag_big\":\"za-big.png\",\"sequence\":\"500\",\"short_name\":\"south-africa\",\"domain_switcher_region_name\":\"Africa\"},{\"id\":\"55\",\"domain_name\":\"freelancer.co.ke\",\"url\":\"https:\\\/\\\/www.freelancer.co.ke\",\"pattern\":\"\\\/freelancer.co.ke$\\\/\",\"name\":\"Kenya\",\"info\":\"Go to KE site\",\"info_selected\":\"Stay in KE\",\"flag_small\":\"ke.png\",\"flag_big\":\"ke-big.png\",\"sequence\":\"510\",\"short_name\":\"kenya\",\"domain_switcher_region_name\":\"Africa\"}]},{\"name\":\"Europe\",\"domains\":[{\"id\":\"4\",\"domain_name\":\"freelancer.co.uk\",\"url\":\"https:\\\/\\\/www.freelancer.co.uk\",\"pattern\":\"\\\/freelancer.co.uk$\\\/\",\"name\":\"United Kingdom\",\"info\":\"Go to UK site\",\"info_selected\":\"Stay in UK\",\"flag_small\":\"uk.png\",\"flag_big\":\"uk-big.png\",\"sequence\":\"600\",\"short_name\":\"uk\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"10\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/eu\\\/welcome.php\",\"pattern\":\"\\\/freelancer.eu$\\\/\",\"name\":\"European Union\",\"info\":\"Go to EU site\",\"info_selected\":\"Stay in EU\",\"flag_small\":\"eu.png\",\"flag_big\":\"eu-big.png\",\"sequence\":\"610\",\"short_name\":\"europe-union\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"22\",\"domain_name\":\"fr.freelancer.com\",\"url\":\"https:\\\/\\\/www.fr.freelancer.com\",\"pattern\":\"\\\/fr.freelancer.com$\\\/\",\"name\":\"France\",\"info\":\"Go to FR site\",\"info_selected\":\"Stay in FR\",\"flag_small\":\"fr.png\",\"flag_big\":\"fr-big.png\",\"sequence\":\"620\",\"short_name\":\"france\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"8\",\"domain_name\":\"freelancer.de\",\"url\":\"https:\\\/\\\/www.freelancer.de\",\"pattern\":\"\\\/freelancer.de$\\\/\",\"name\":\"Germany\",\"info\":\"Go to DE site\",\"info_selected\":\"Stay in DE\",\"flag_small\":\"de.png\",\"flag_big\":\"de-big.png\",\"sequence\":\"630\",\"short_name\":\"germany\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"42\",\"domain_name\":\"freelancer.gr\",\"url\":\"https:\\\/\\\/www.freelancer.gr\",\"pattern\":\"\\\/freelancer.gr$\\\/\",\"name\":\"Greece\",\"info\":\"Go to GR site\",\"info_selected\":\"Stay in GR\",\"flag_small\":\"gr.png\",\"flag_big\":\"gr-big.png\",\"sequence\":\"640\",\"short_name\":\"greece\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"35\",\"domain_name\":\"freelancer.pt\",\"url\":\"https:\\\/\\\/www.freelancer.pt\",\"pattern\":\"\\\/freelancer.pt$\\\/\",\"name\":\"Portugal\",\"info\":\"Go to PT site\",\"info_selected\":\"Stay in PT\",\"flag_small\":\"pt.png\",\"flag_big\":\"pt-big.png\",\"sequence\":\"650\",\"short_name\":\"portugal\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"14\",\"domain_name\":\"freelancer.es\",\"url\":\"https:\\\/\\\/www.freelancer.es\",\"pattern\":\"\\\/freelancer.es$\\\/\",\"name\":\"Spain\",\"info\":\"Go to ES site\",\"info_selected\":\"Stay in ES\",\"flag_small\":\"es.png\",\"flag_big\":\"es-big.png\",\"sequence\":\"660\",\"short_name\":\"spain\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"45\",\"domain_name\":\"freelancer.cz\",\"url\":\"https:\\\/\\\/www.freelancer.cz\",\"pattern\":\"\\\/freelancer.cz$\\\/\",\"name\":\"Czech Republic\",\"info\":\"Go to CZ site\",\"info_selected\":\"Stay in CZ\",\"flag_small\":\"cz.png\",\"flag_big\":\"cz-big.png\",\"sequence\":\"665\",\"short_name\":\"czech-republic\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"33\",\"domain_name\":\"freelancer.se\",\"url\":\"https:\\\/\\\/www.freelancer.se\",\"pattern\":\"\\\/freelancer.se$\\\/\",\"name\":\"Sweden\",\"info\":\"Go to SV site\",\"info_selected\":\"Stay in SV\",\"flag_small\":\"sv.png\",\"flag_big\":\"sv-big.png\",\"sequence\":\"670\",\"short_name\":\"sweden\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"43\",\"domain_name\":\"freelancer.is\",\"url\":\"https:\\\/\\\/www.freelancer.is\",\"pattern\":\"\\\/freelancer.is$\\\/\",\"name\":\"Iceland\",\"info\":\"Go to IS site\",\"info_selected\":\"Stay in IS\",\"flag_small\":\"is.png\",\"flag_big\":\"is-big.png\",\"sequence\":\"680\",\"short_name\":\"iceland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"50\",\"domain_name\":\"freelancer.ie\",\"url\":\"https:\\\/\\\/www.freelancer.ie\",\"pattern\":\"\\\/freelancer.ie$\\\/\",\"name\":\"Ireland\",\"info\":\"Go to IE site\",\"info_selected\":\"Stay in IE\",\"flag_small\":\"ie.png\",\"flag_big\":\"ie-big.png\",\"sequence\":\"685\",\"short_name\":\"ireland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"26\",\"domain_name\":\"freelancer.co.it\",\"url\":\"https:\\\/\\\/www.freelancer.co.it\",\"pattern\":\"\\\/freelancer.co.it$\\\/\",\"name\":\"Italy\",\"info\":\"Go to IT site\",\"info_selected\":\"Stay in IT\",\"flag_small\":\"it.png\",\"flag_big\":\"it-big.png\",\"sequence\":\"690\",\"short_name\":\"italy\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"27\",\"domain_name\":\"freelancer.com\",\"url\":\"https:\\\/\\\/www.freelancer.com\\\/changeLanguage.php?lang=nl\",\"pattern\":\"\\\/freelancer.co.nl$\\\/\",\"name\":\"Netherlands\",\"info\":\"Go to NL site\",\"info_selected\":\"Stay in NL\",\"flag_small\":\"nl.png\",\"flag_big\":\"nl-big.png\",\"sequence\":\"700\",\"short_name\":\"netherlands\",\"domain_switcher_region_name\":\"Europe\",\"current\":true},{\"id\":\"28\",\"domain_name\":\"tr.freelancer.com\",\"url\":\"https:\\\/\\\/www.tr.freelancer.com\",\"pattern\":\"\\\/tr.freelancer.com$\\\/\",\"name\":\"Turkey\",\"info\":\"Go to TR site\",\"info_selected\":\"Stay in TR\",\"flag_small\":\"tr.png\",\"flag_big\":\"tr-big.png\",\"sequence\":\"710\",\"short_name\":\"turkey\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"36\",\"domain_name\":\"freelancer.pl\",\"url\":\"https:\\\/\\\/www.freelancer.pl\",\"pattern\":\"\\\/freelancer.pl$\\\/\",\"name\":\"Poland\",\"info\":\"Go to PL site\",\"info_selected\":\"Stay in PL\",\"flag_small\":\"pl.png\",\"flag_big\":\"pl-big.png\",\"sequence\":\"720\",\"short_name\":\"poland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"39\",\"domain_name\":\"freelancer.co.ro\",\"url\":\"https:\\\/\\\/www.freelancer.co.ro\",\"pattern\":\"\\\/freelancer.co.ro$\\\/\",\"name\":\"Romania\",\"info\":\"Go to RO site\",\"info_selected\":\"Stay in RO\",\"flag_small\":\"ro.png\",\"flag_big\":\"ro-big.png\",\"sequence\":\"730\",\"short_name\":\"romania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"40\",\"domain_name\":\"freelancer.com.ru\",\"url\":\"https:\\\/\\\/www.freelancer.com.ru\",\"pattern\":\"\\\/freelancer.com.ru$\\\/\",\"name\":\"Russia\",\"info\":\"Go to RU site\",\"info_selected\":\"Stay in RU\",\"flag_small\":\"ru.png\",\"flag_big\":\"ru-big.png\",\"sequence\":\"740\",\"short_name\":\"russia\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"47\",\"domain_name\":\"freelancer.com.ua\",\"url\":\"https:\\\/\\\/www.freelancer.com.ua\",\"pattern\":\"\\\/freelancer.com.ua$\\\/\",\"name\":\"Ukraine\",\"info\":\"Go to UA site\",\"info_selected\":\"Stay in UA\",\"flag_small\":\"ua.png\",\"flag_big\":\"ua-big.png\",\"sequence\":\"1090\",\"short_name\":\"ukraine\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"48\",\"domain_name\":\"freelancer.no\",\"url\":\"https:\\\/\\\/www.freelancer.no\",\"pattern\":\"\\\/freelancer.no$\\\/\",\"name\":\"Norway\",\"info\":\"Go to NO site\",\"info_selected\":\"Stay in NO\",\"flag_small\":\"no.png\",\"flag_big\":\"no-big.png\",\"sequence\":\"1100\",\"short_name\":\"norway\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"57\",\"domain_name\":\"freelancer.hu\",\"url\":\"https:\\\/\\\/www.freelancer.hu\",\"pattern\":\"\\\/freelancer.hu$\\\/\",\"name\":\"Hungary\",\"info\":\"Go to HU site\",\"info_selected\":\"Stay in HU\",\"flag_small\":\"hu.png\",\"flag_big\":\"hu-big.png\",\"sequence\":\"1110\",\"short_name\":\"hungary\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"52\",\"domain_name\":\"fi.freelancer.com\",\"url\":\"https:\\\/\\\/www.fi.freelancer.com\",\"pattern\":\"\\\/fi.freelancer.com$\\\/\",\"name\":\"Finland\",\"info\":\"Go to FI site\",\"info_selected\":\"Stay in FI\",\"flag_small\":\"fi.png\",\"flag_big\":\"fi-big.png\",\"sequence\":\"1120\",\"short_name\":\"finland\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"53\",\"domain_name\":\"dk.freelancer.com\",\"url\":\"https:\\\/\\\/www.dk.freelancer.com\",\"pattern\":\"\\\/dk.freelancer.com$\\\/\",\"name\":\"Denmark\",\"info\":\"Go to DK site\",\"info_selected\":\"Stay in DK\",\"flag_small\":\"dk.png\",\"flag_big\":\"dk-big.png\",\"sequence\":\"1130\",\"short_name\":\"denmark\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"56\",\"domain_name\":\"freelancer.com.al\",\"url\":\"https:\\\/\\\/www.freelancer.com.al\",\"pattern\":\"\\\/freelancer.com.al$\\\/\",\"name\":\"Albania\",\"info\":\"Go to AL site\",\"info_selected\":\"Stay in AL\",\"flag_small\":\"al.png\",\"flag_big\":\"al-big.png\",\"sequence\":\"1140\",\"short_name\":\"albania\",\"domain_switcher_region_name\":\"Europe\"},{\"id\":\"51\",\"domain_name\":\"freelancer.si\",\"url\":\"https:\\\/\\\/www.freelancer.si\",\"pattern\":\"\\\/freelancer.si$\\\/\",\"name\":\"Slovenia\",\"info\":\"Go to SI site\",\"info_selected\":\"Stay in SI\",\"flag_small\":\"si.png\",\"flag_big\":\"si-big.png\",\"sequence\":\"1150\",\"short_name\":\"slovenia\",\"domain_switcher_region_name\":\"Europe\"}]},{\"name\":\"Asia Pacific\",\"domains\":[{\"id\":\"3\",\"domain_name\":\"freelancer.com.au\",\"url\":\"https:\\\/\\\/www.freelancer.com.au\",\"pattern\":\"\\\/freelancer.com.au$\\\/\",\"name\":\"Australia\",\"info\":\"Go to Australia site\",\"info_selected\":\"Stay in Australia\",\"flag_small\":\"au.png\",\"flag_big\":\"au-big.png\",\"sequence\":\"800\",\"short_name\":\"australia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"2\",\"domain_name\":\"freelancer.co.nz\",\"url\":\"https:\\\/\\\/www.freelancer.co.nz\",\"pattern\":\"\\\/freelancer.co.nz$\\\/\",\"name\":\"New Zealand\",\"info\":\"Go to New Zealand site\",\"info_selected\":\"Stay in New Zealand\",\"flag_small\":\"nz.png\",\"flag_big\":\"nz-big.png\",\"sequence\":\"810\",\"short_name\":\"new-zealand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"5\",\"domain_name\":\"freelancer.hk\",\"url\":\"https:\\\/\\\/www.freelancer.hk\",\"pattern\":\"\\\/freelancer.hk$\\\/\",\"name\":\"Hong Kong\",\"info\":\"Go to HK site\",\"info_selected\":\"Stay in HK\",\"flag_small\":\"hk.png\",\"flag_big\":\"hk-big.png\",\"sequence\":\"820\",\"short_name\":\"hong-kong\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"29\",\"domain_name\":\"freelancer.com.bd\",\"url\":\"https:\\\/\\\/www.freelancer.com.bd\",\"pattern\":\"\\\/freelancer.com.bd$\\\/\",\"name\":\"Bangladesh\",\"info\":\"Go to BD site\",\"info_selected\":\"Stay in BD\",\"flag_small\":\"bd.png\",\"flag_big\":\"bd-big.png\",\"sequence\":\"830\",\"short_name\":\"bangladesh\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"12\",\"domain_name\":\"freelancer.in\",\"url\":\"https:\\\/\\\/www.freelancer.in\",\"pattern\":\"\\\/freelancer.in$\\\/\",\"name\":\"India\",\"info\":\"Go to IN site\",\"info_selected\":\"Stay in IN\",\"flag_small\":\"in.png\",\"flag_big\":\"in-big.png\",\"sequence\":\"840\",\"short_name\":\"india\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"24\",\"domain_name\":\"freelancer.co.id\",\"url\":\"https:\\\/\\\/www.freelancer.co.id\",\"pattern\":\"\\\/freelancer.co.id$\\\/\",\"name\":\"Indonesia\",\"info\":\"Go to ID site\",\"info_selected\":\"Stay in ID\",\"flag_small\":\"id.png\",\"flag_big\":\"id-big.png\",\"sequence\":\"850\",\"short_name\":\"indo\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"41\",\"domain_name\":\"freelancer.jp\",\"url\":\"https:\\\/\\\/www.freelancer.jp\",\"pattern\":\"\\\/freelancer.jp$\\\/\",\"name\":\"Japan\",\"info\":\"Go to JP site\",\"info_selected\":\"Stay in JP\",\"flag_small\":\"jp.png\",\"flag_big\":\"jp-big.png\",\"sequence\":\"860\",\"short_name\":\"japan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"49\",\"domain_name\":\"freelancer.co.kr\",\"url\":\"https:\\\/\\\/www.freelancer.co.kr\",\"pattern\":\"\\\/freelancer.co.kr$\\\/\",\"name\":\"Korea, Republic of\",\"info\":\"Go to KR site\",\"info_selected\":\"Stay in KR\",\"flag_small\":\"kr.png\",\"flag_big\":\"kr-big.png\",\"sequence\":\"865\",\"short_name\":\"korea-republic-of\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"30\",\"domain_name\":\"my.freelancer.com\",\"url\":\"https:\\\/\\\/www.my.freelancer.com\",\"pattern\":\"\\\/my.freelancer.com$\\\/\",\"name\":\"Malaysia\",\"info\":\"Go to MS site\",\"info_selected\":\"Stay in MS\",\"flag_small\":\"ms.png\",\"flag_big\":\"ms-big.png\",\"sequence\":\"870\",\"short_name\":\"malaysia\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"20\",\"domain_name\":\"freelancer.pk\",\"url\":\"https:\\\/\\\/www.freelancer.pk\",\"pattern\":\"\\\/freelancer.pk$\\\/\",\"name\":\"Pakistan\",\"info\":\"Go to PK site\",\"info_selected\":\"Stay in PK\",\"flag_small\":\"pk.png\",\"flag_big\":\"pk-big.png\",\"sequence\":\"880\",\"short_name\":\"pakistan\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"7\",\"domain_name\":\"freelancer.ph\",\"url\":\"https:\\\/\\\/www.freelancer.ph\",\"pattern\":\"\\\/freelancer.ph$\\\/\",\"name\":\"Philippines\",\"info\":\"Go to PH site\",\"info_selected\":\"Stay in PH\",\"flag_small\":\"ph.png\",\"flag_big\":\"ph-big.png\",\"sequence\":\"890\",\"short_name\":\"philippines\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"38\",\"domain_name\":\"freelancer.cn\",\"url\":\"https:\\\/\\\/www.freelancer.cn\",\"pattern\":\"\\\/freelancer.cn$\\\/\",\"name\":\"P.R. China\",\"info\":\"Go to ZH site\",\"info_selected\":\"Stay in ZH\",\"flag_small\":\"zh.png\",\"flag_big\":\"zh-big.png\",\"sequence\":\"900\",\"short_name\":\"china\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"6\",\"domain_name\":\"freelancer.sg\",\"url\":\"https:\\\/\\\/www.freelancer.sg\",\"pattern\":\"\\\/freelancer.sg$\\\/\",\"name\":\"Singapore\",\"info\":\"Go to SG site\",\"info_selected\":\"Stay in SG\",\"flag_small\":\"sg.png\",\"flag_big\":\"sg-big.png\",\"sequence\":\"910\",\"short_name\":\"singapore\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"44\",\"domain_name\":\"freelancer.co.th\",\"url\":\"https:\\\/\\\/www.freelancer.co.th\",\"pattern\":\"\\\/freelancer.co.th$\\\/\",\"name\":\"Thailand\",\"info\":\"Go to TH site\",\"info_selected\":\"Stay in TH\",\"flag_small\":\"th.png\",\"flag_big\":\"th-big.png\",\"sequence\":\"940\",\"short_name\":\"thailand\",\"domain_switcher_region_name\":\"Asia Pacific\"},{\"id\":\"54\",\"domain_name\":\"vn.freelancer.com\",\"url\":\"https:\\\/\\\/www.vn.freelancer.com\",\"pattern\":\"\\\/vn.freelancer.com$\\\/\",\"name\":\"Vietnam\",\"info\":\"Go to VN site\",\"info_selected\":\"Stay in VN\",\"flag_small\":\"vn.png\",\"flag_big\":\"vn-big.png\",\"sequence\":\"950\",\"short_name\":\"vietnam\",\"domain_switcher_region_name\":\"Asia Pacific\"}]},{\"name\":\"Latin America\",\"domains\":[{\"id\":\"18\",\"domain_name\":\"freelancer.com.ar\",\"url\":\"https:\\\/\\\/www.freelancer.com.ar\",\"pattern\":\"\\\/freelancer.com.ar$\\\/\",\"name\":\"Argentina\",\"info\":\"Go to AR site\",\"info_selected\":\"Stay in AR\",\"flag_small\":\"ar.png\",\"flag_big\":\"ar-big.png\",\"sequence\":\"1000\",\"short_name\":\"argentina\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"25\",\"domain_name\":\"br.freelancer.com\",\"url\":\"https:\\\/\\\/www.br.freelancer.com\",\"pattern\":\"\\\/br.freelancer.com$\\\/\",\"name\":\"Brazil\",\"info\":\"Go to BR site\",\"info_selected\":\"Stay in BR\",\"flag_small\":\"br.png\",\"flag_big\":\"br-big.png\",\"sequence\":\"1010\",\"short_name\":\"brazil\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"46\",\"domain_name\":\"freelancer.cl\",\"url\":\"https:\\\/\\\/www.freelancer.cl\",\"pattern\":\"\\\/freelancer.cl$\\\/\",\"name\":\"Chile\",\"info\":\"Go to CL site\",\"info_selected\":\"Stay in CL\",\"flag_small\":\"cl.png\",\"flag_big\":\"cl-big.png\",\"sequence\":\"1020\",\"short_name\":\"chile\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"37\",\"domain_name\":\"freelancer.com.co\",\"url\":\"https:\\\/\\\/www.freelancer.com.co\",\"pattern\":\"\\\/freelancer.com.co$\\\/\",\"name\":\"Colombia\",\"info\":\"Go to CO site\",\"info_selected\":\"Stay in CO\",\"flag_small\":\"co.png\",\"flag_big\":\"co-big.png\",\"sequence\":\"1030\",\"short_name\":\"colombia\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"17\",\"domain_name\":\"freelancer.ec\",\"url\":\"https:\\\/\\\/www.freelancer.ec\",\"pattern\":\"\\\/freelancer.ec$\\\/\",\"name\":\"Ecuador\",\"info\":\"Go to EC site\",\"info_selected\":\"Stay in EC\",\"flag_small\":\"ec.png\",\"flag_big\":\"ec-big.png\",\"sequence\":\"1040\",\"short_name\":\"ecuador\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"15\",\"domain_name\":\"freelancer.mx\",\"url\":\"https:\\\/\\\/www.freelancer.mx\",\"pattern\":\"\\\/freelancer.mx$\\\/\",\"name\":\"Mexico\",\"info\":\"Go to MX site\",\"info_selected\":\"Stay in MX\",\"flag_small\":\"mx.png\",\"flag_big\":\"mx-big.png\",\"sequence\":\"1050\",\"short_name\":\"mexico\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"16\",\"domain_name\":\"freelancer.com.pe\",\"url\":\"https:\\\/\\\/www.freelancer.com.pe\",\"pattern\":\"\\\/freelancer.com.pe$\\\/\",\"name\":\"Peru\",\"info\":\"Go to PE site\",\"info_selected\":\"Stay in PE\",\"flag_small\":\"pe.png\",\"flag_big\":\"pe-big.png\",\"sequence\":\"1070\",\"short_name\":\"peru\",\"domain_switcher_region_name\":\"Latin America\"},{\"id\":\"31\",\"domain_name\":\"freelancer.uy\",\"url\":\"https:\\\/\\\/www.freelancer.uy\",\"pattern\":\"\\\/freelancer.uy$\\\/\",\"name\":\"Uruguay\",\"info\":\"Go to UY site\",\"info_selected\":\"Stay in UY\",\"flag_small\":\"uy.png\",\"flag_big\":\"uy-big.png\",\"sequence\":\"1080\",\"short_name\":\"uruguay\",\"domain_swit:cher_region_name\":\"Latin America\"}]}]}}\n"}]},{"id":"9271356","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9271355","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"95","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"95","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Reference, Path, Query, Action } from '.\/store'\n+import { backend } from '.\/backend';\n+import { RootModel } from '.\/root.model';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+export interface ListOptions {\n+ query: QueryObservable;\n+}\n+\n+export interface QueryObservable {\n+ limit?: number|Observable<number>;\n+ offset?: number|Observable<number>;\n+}\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<RootModel>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {}\n+\n+ list<a extends keyof RootModel, b extends keyof RootModel[a]>(\n+ key1: a,\n+ key2: b|Observable<b>,\n+ options?: ListOptions\n+ ): ListObservable<Array<RootModel[a][b]>> {\n+\n+ const pathStream = Observable.combineLatest([\n+ (key1 instanceof Observable) ? key1 : Observable.of(key1),\n+ (key2 instanceof Observable) ? key2 : Observable.of(key2)\n+ ]);\n+\n+ const query = options ? options.query : {};\n+ const queryStream = Observable.combineLatest([\n+ (query.limit instanceof Observable) ? query.limit : Observable.of(query.limit),\n+ (query.offset instanceof Observable) ? query.offset : Observable.of(query.offset)\n+ ], (limit: number, offset: number) => ({ limit, offset }));\n+\n+ const refStream = Observable.combineLatest(\n+ [pathStream, queryStream],\n+ (path: Path, query: Query): Reference => ({path, query})\n+ )\n+ .multicast(() => new ReplaySubject(1))\n+ .refCount();\n+\n+ const fetchStream = refStream\n+ .switchMap((ref: Reference) => {\n+ const { path, query } = ref;\n+ if (backend[path[0]] && backend[path[0]].fetch) {\n+ return Observable.of((<any>backend)[path[0]].fetch(path[1], query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => {\n+ this.store.dispatch(<Action>{\n+ type: 'API_FETCH_SUCCESS',\n+ payload: { data, ref }\n+ })\n+ })\n+ .mapTo({path, query});\n+ } else {\n+ return Observable.empty();\n+ }\n+ });\n+\n+ \/\/ TODO: WebSocket -> liveStream\n+\n+ return new ListObservable(refStream, this.apiHttp, this.store,\n+ Observable.merge(refStream, fetchStream)\n+ .switchMap(({path, query}: any) =>\n+ this.store.pluck(path[0], path[1])\n+ )\n+ .distinctUntilChanged()\n+ .map((data: any) => {\n+ if (data && data.lists) {\n+ \t\t\t\t\treturn (<any>data).lists['default']\n+ \t\t\t\t\t .slice(query.offset || 0)\n+ \t\t\t\t\t .map((id: any) => (<any>data).entities[<string>id]);\n+ } else {\n+ return [];\n+ }\n+ })\n+ );\n+\n+ }\n+\n+ \/\/ TODO: object() => new ObjectObservable()\n+\n+}\n"}]},{"id":"9271354","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5,\n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9271353","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9271352","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/backend.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Backend {\n+ fetch?: (key: string, query: any) => {\n+ endpoint: string;\n+ params: {\n+ [key: string]: string|number;\n+ };\n+ },\n+ post?: (key: string) => {\n+ endpoint: string;\n+ }\n+};\n+\n+export const backend: { [k: string]: Backend } = {\n+ threads: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/threads`,\n+ params: {\n+ unread_count: 'true',\n+ last_message: 'true',\n+ message_details: 'true',\n+ context_details: 'true',\n+ user_details: 'true',\n+ limit: query.limit\n+ }\n+ })\n+ },\n+ messages: {\n+ fetch: (key, query) => ({\n+ endpoint: `messages\/0.1\/messages`,\n+ params: {\n+ 'threads[]': key,\n+ }\n+ }),\n+ post: (key) => ({\n+ endpoint: `messages\/0.1\/threads\/${key}\/messages\/`,\n+ params: {\n+ thread_id: key\n+ }\n+ })\n+ }\n+};\n"}]},{"id":"9271351","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.params)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ post(config: any, payload: Object): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.post(`${this.config.apiBaseUrl}\/${config.endpoint}`,\n+ this.serialize({ ...payload, ...config.params }), {\n+ headers: authHeader,\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid , token}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${uid};${token}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ const params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ params.set('compact', 'true');\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9271350","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9271349","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n"}]},{"id":"9271348","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9271347","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9271346","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ uid: number;\n+ token: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const uid = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10);\n+ const token = this.cookies.get(this.authConfig.authHashCookie);\n+ this.next({ uid, token });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9271345","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n"}]},{"id":"9271344","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9271343","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-hx2rfs46j5cltcwz6e3s"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271342","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9271341","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888 -ssl\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.1\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9271340","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9271339","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9271338","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9271337","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9271336","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+This project was generated with [Angular CLI](https:\/\/github.com\/angular\/angular-cli) version 1.0.0-rc.0.\n+\n+## Development server\n+Run `ng serve` for a dev server. Navigate to `http:\/\/localhost:4200\/`. The app will automatically reload if you change any of the source files.\n+\n+## Code scaffolding\n+\n+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive\/pipe\/service\/class\/module`.\n+\n+## Build\n+\n+Run `ng build` to build the project. The build artifacts will be stored in the `dist\/` directory. Use the `-prod` flag for a production build.\n+\n+## Running unit tests\n+\n+Run `ng test` to execute the unit tests via [Karma](https:\/\/karma-runner.github.io).\n+\n+## Running end-to-end tests\n+\n+Run `ng e2e` to execute the end-to-end tests via [Protractor](http:\/\/www.protractortest.org\/).\n+Before running the tests make sure you are serving the app via `ng serve`.\n+\n+## Further help\n+\n+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https:\/\/github.com\/angular\/angular-cli\/blob\/master\/README.md).\n"}]},{"id":"9271335","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6\n"}]},{"id":"9271334","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9271333","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9271332","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9271331","metadata":{"line:first":722},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"945","newLength":"946","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?mobile=true permanent;\n rewrite ^\/semm\/$ https:\/\/$host\/find\/?mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/activate.php \/local\/activate.php last;\n rewrite ^\/local\/onSignup.php \/local\/onSignup.php last;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n"}]},{"id":"9271330","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9271329","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9271328","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9271327","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271326","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-list.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9271325","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9271324","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-item.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9271323","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Input } from '@angular\/core';\n import { Thread } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-item',\n template: `\n <div>{{ thread | json }}<div>\n `,\n styleUrls: ['.\/thread-item.component.less'],\n })\n export class ThreadItemComponent {\n @Input() thread: Thread;\n }\n"}]},{"id":"9271322","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":["public\/static\/modules\/messaging\/messaging.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9271321","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n import { ThreadListComponent } from '.\/thread-list.component';\n import { ThreadItemComponent } from '.\/thread-item.component';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n ],\n declarations: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n exports: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class MessagingModule {}\n"}]},{"id":"9271320","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":["public\/static\/modules\/messaging\/index.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9271319","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/messaging\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/messaging.module';\n"}]},{"id":"9271318","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9271317","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9271316","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9271315","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9271314","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { RouterModule, Routes } from '@angular\/router';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n-\n-const messagingInboxRoutes: Routes = [\n- {\n- path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forChild(messagingInboxRoutes),\n- ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class MessagingInboxRoutingModule { }\n"}]},{"id":"9271313","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9271312","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9271311","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9271310","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9271309","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9271308","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9271307","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9271306","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9271305","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9271304","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9271303","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9271302","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9271301","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9271300","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9271299","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9271298","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9271297","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9271296","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9271295","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9271294","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9271293","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"371","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9271292","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"10","delLines":"27","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1236","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"^2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9271291","metadata":{"line:first":1},"oldPath":null,"currentPath":".angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"gaf-app\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"131f7a148dcfbcadbd3df6d177b7882b006f73f0":{"commit":"131f7a148dcfbcadbd3df6d177b7882b006f73f0","tree":"4f17b76b5c288f0726738cb8dbe8b91c00286237","parents":["79b6461eb65a7d3a9dd7a5120496b34aed731aea"],"time":"1488990284","author":"Laurent Goudet","summary":"more improvements","message":"more improvements","authorEmail":"laurent@freelancer.com"},"79b6461eb65a7d3a9dd7a5120496b34aed731aea":{"commit":"79b6461eb65a7d3a9dd7a5120496b34aed731aea","tree":"35b936db1e49a3aa6e0486031a1d70bb98fc16fc","parents":["a3f34334da468fa18fce95cfdd6d07057d1c3e88"],"time":"1488986050","author":"Laurent Goudet","summary":"Update cli to rc1","message":"Update cli to rc1","authorEmail":"laurent@freelancer.com"},"a3f34334da468fa18fce95cfdd6d07057d1c3e88":{"commit":"a3f34334da468fa18fce95cfdd6d07057d1c3e88","tree":"41cd820055f91b119d9c8a797bdbd83791eca5f0","parents":["2b096f05e8550a621882e4da5e8d3b1a5f3ddae4"],"time":"1488985757","author":"Laurent Goudet","summary":"Finish renaming","message":"Finish renaming","authorEmail":"laurent@freelancer.com"},"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4":{"commit":"2b096f05e8550a621882e4da5e8d3b1a5f3ddae4","tree":"579fb8566e194b3d80a6543b304c56ffc9263a7a","parents":["203a6aa47f50467ad46e556442f65d2c5aa574c6"],"time":"1488984749","author":"Laurent Goudet","summary":"more renaming","message":"more renaming","authorEmail":"laurent@freelancer.com"},"203a6aa47f50467ad46e556442f65d2c5aa574c6":{"commit":"203a6aa47f50467ad46e556442f65d2c5aa574c6","tree":"3bb4fc3a032bebb279f521ab7fb269f6aba8c600","parents":["99562cd0ca1d33a5132cb132bfb5a79f46c1a057"],"time":"1488978328","author":"Laurent Goudet","summary":"it works","message":"it works","authorEmail":"laurent@freelancer.com"},"99562cd0ca1d33a5132cb132bfb5a79f46c1a057":{"commit":"99562cd0ca1d33a5132cb132bfb5a79f46c1a057","tree":"a90b746681e137aa40e21d6aa2e82be7022cb3d9","parents":["8c26bbd83a354887739377f4beb4a3e82e3905e2"],"time":"1488903326","author":"Laurent Goudet","summary":"bugz","message":"bugz","authorEmail":"laurent@freelancer.com"},"8c26bbd83a354887739377f4beb4a3e82e3905e2":{"commit":"8c26bbd83a354887739377f4beb4a3e82e3905e2","tree":"32398a01d49efebce64b2f14d55cfdf0babc5dc5","parents":["fca85f7440b205d1b05d860cae596e72cae65150"],"time":"1488902573","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"fca85f7440b205d1b05d860cae596e72cae65150":{"commit":"fca85f7440b205d1b05d860cae596e72cae65150","tree":"0b44b65f63fe3bd3a590632ccb4681afd1de402c","parents":["4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c"],"time":"1488819407","author":"Laurent Goudet","summary":"Bugz fixing","message":"Bugz fixing","authorEmail":"laurent@freelancer.com"},"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c":{"commit":"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c","tree":"e86302ebe2ecb73a3e4893f93119efd6f1ea458c","parents":["c3815d83d0278276714c527df4b976ff2c29aa19"],"time":"1488818884","author":"Laurent Goudet","summary":"Dynamic queries handling","message":"Dynamic queries handling","authorEmail":"laurent@freelancer.com"},"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"699845":{"id":"699845","revisionID":"56417","dateCreated":"1488903350","dateModified":"1488903353","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - bugz","unitStatus":"1","lintStatus":"4","changes":[{"id":"9266819","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5281","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5281","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n+\n"}]},{"id":"9266818","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266817","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9266816","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9266815","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9266814","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9266813","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9266812","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9266811","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9266810","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266809","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9266808","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9266807","metadata":{"old:file:size":2238,"old:file:mime-type":"image\/x-icon","old:binary-phid":"PHID-FILE-63mnytxytag7rm7bza5y"},"oldPath":null,"currentPath":"public\/favicon.ico","awayPaths":["webapp\/src\/favicon.ico"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266806","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-6h4izxan4kvi43u7mev2"},"oldPath":"public\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266805","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const environment = {\n+ production: false,\n+ authConfig: {\n+ baseUrl: `https:\/\/laurent.syd1.fln-dev.net\/auth`,\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/api`,\n+ ajaxBaseUrl: `https:\/\/laurent.syd1.fln-dev.net\/ajax`,\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n+\n"}]},{"id":"9266804","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266803","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9266802","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266801","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+import 'rxjs\/add\/observable\/merge';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/merge';\n+import 'rxjs\/add\/operator\/mergeMap';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/pluck';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n"}]},{"id":"9266800","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.href = state.url;\n+ return false;\n+ }\n+}\n"}]},{"id":"9266799","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router'; \n+import { Datastore, ListObservable, Message } from '@shared\/datastore';\n+\n+@Component({\n+ template: `\n+ <div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <!--<inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>-->\n+ <\/div>\n+ \n+ <!-- <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>-->\n+ <\/div>\n+ `,\n+})\n+export class ThreadComponent {\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.route.params.map(({threadId}) => threadId)\n+ .subscribe(id => console.log(id));\n+ this.messages = this.datastore.list(\n+ 'messages',\n+ this.route.params.map(({threadId}) => threadId), {\n+ filters: {\n+ limit: 10\n+ }\n+ }\n+ );\n+ }\n+}\n"}]},{"id":"9266798","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9266797","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9266796","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread.thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9266795","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9266794","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+\n+ <fl-user-avatar [src]=\"thread.owner.avatar\"\n+ class=\"avatar\">\n+ <\/fl-user-avatar>\n+ <div class=\"body\">\n+ <div class=\"body-content-username\"\n+ *ngFor=\"let member of thread.members; let $last = last;\">\n+ {{ member.username }}<span *ngIf=\"!$last\">,<\/span>\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{ thread.message.message }}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9266793","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9266792","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9266791","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9266790","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9266789","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9266788","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9266787","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9266786","metadata":{"line:first":1,"copy:lines":{"47":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"48":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"49":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"50":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"51","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"51","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ThreadComponent,\n+ EmptyThreadComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n+\n"}]},{"id":"9266785","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router'; \n+import { Datastore, ListObservable, Thread } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <router-outlet><\/router-outlet>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ threadsLimit = new Subject<number>();\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.threads = this.datastore.list(\n+ 'threads',\n+ this.auth.map(({uid}) => uid.toString()), {\n+ filters: {\n+ limit: this.threadsLimit.startWith(10),\n+ }\n+ }\n+ );\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ \/\/this.threadsLimit.next(count);\n+ }\n+\n+ sendMessage(message: string) {\n+ \/\/ this.messages.action({ message });\n+ }\n+\n+ \/*createThread() {\n+ this.threads.push();\n+ }*\/\n+\n+}\n"}]},{"id":"9266784","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9266783","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",3,"-"],"7":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",6,"-"],"8":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",7,"-"],"9":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",8,"-"],"10":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",9,"-"],"24":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",16,"-"],"25":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",17,"-"],"26":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",18,"-"],"27":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",19,"-"],"28":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",20,"-"],"29":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",21,"-"],"30":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",25,"-"],"31":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",26,"-"],"32":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",27,"-"],"33":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",28,"-"],"34":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",29,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { RouterModule, Routes } from '@angular\/router';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { AuthGuard } from '..\/auth-guard.service';\n+\n+const messagingInboxRoutes: Routes = [\n+ {\n+ path: '',\n+ canActivate: [AuthGuard],\n+ component: MessagingInboxComponent,\n+ children: [\n+ {\n+ path: '',\n+ component: EmptyThreadComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: ThreadComponent\n+ }\n+ ]\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forChild(messagingInboxRoutes),\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class MessagingInboxRoutingModule { }\n"}]},{"id":"9266782","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message of messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9266781","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9266780","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9266779","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9266778","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message: EventEmitter<string>;\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9266777","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9266776","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9266775","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9266774","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/empty-thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: `\n+ <div>\n+ NO THREAD SELECTED\n+ <\/div>\n+ `,\n+})\n+export class EmptyThreadComponent {\n+\n+}\n"}]},{"id":"9266773","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9266772","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9266771","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9266770","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9266769","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.uid) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9266768","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9266767","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9266766","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9266765","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"36","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"36","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages-new',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages-new',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n+\n"}]},{"id":"9266764","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9266763","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/user-avatar.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular\/core';\n+@Component({\n+ selector: 'fl-user-avatar',\n+ template: `\n+ <img [src]=\"avatarUrl\" \/>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class UserAvatarComponent implements OnChanges {\n+ private avatarUrl: string;\n+ @Input() src: string;\n+\n+ constructor() {}\n+\n+ ngOnChanges() {\n+ if (this.src) {\n+ this.avatarUrl = `https:\/\/laurent.syd1.fln-dev.net${this.src}`;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9266762","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266761","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n+import { UserAvatarComponent } from '.\/user-avatar.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9266760","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9266759","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9266758","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9266757","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+ \n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+ \n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+ \n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+ \n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+ \n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+ \n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver; \n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9266756","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9266755","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9266754","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9266753","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9266752","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9266751","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9266750","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9266749","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9266748","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use \n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ \n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9266747","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9266746","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Thread, ThreadUnreadCount } from '.\/thread.model';\n+\n+export const threadReducer = (\n+ state: Readonly<{ [userId: string]: Entities<Thread> }> = {},\n+ action: Action\n+): Readonly<{ [userId: string]: Entities<Thread> }> => {\n+\n+ if (action.payload && action.payload.ref.collection === 'threads') {\n+ console.log('threadReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ Denoramlize the Thread API response\n+ const contextDetails = data.context_details;\n+ const users = data.users;\n+ const threads = data.threads.reduce((acc: any, thread: any) => {\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.project = contextDetails.projects[context.id];\n+ } else {\n+ context.contest = contextDetails.contests[context.id];\n+ }\n+ context.id = undefined;\n+ const members = thread.thread.members.map((memberId: number) => {\n+ return { ...users[memberId], ...{\n+ \/\/ Avatar CDN URLs returned by the API are crap\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ });\n+ const owner = { ...users[thread.thread.owner], ...{\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ const threadInner = { ...thread.thread, context, members, owner };\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ acc[thread.id] = { ...thread , ...{ thread: threadInner }, messages };\n+ return acc;\n+ }, {});\n+\n+ return mergeEntities(state, threads, ref);\n+\n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+ \n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n+export const threadUnreadCountReducer =\n+ (state: Entities<ThreadUnreadCount> = {}, action: Action): Entities<ThreadUnreadCount> => {\n+ if (action.payload && action.payload.ref.collection === 'threads') {\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ return mergeEntities(state, data.unread_thread_count, ref);\n+ return state;\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9266745","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface ThreadUnreadCount {\n+ unread_thread_count: number;\n+}\n+ \n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ type: 'project' | 'contest';\n+ contest?: any;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD \n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9266744","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"126","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"126","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+import { Collections } from '.\/collections';\n+\n+import { Thread, ThreadUnreadCount } from '.\/thread\/thread.model';\n+import { threadReducer, threadUnreadCountReducer } from '.\/thread\/thread.reducer';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+\n+import { Observable } from 'rxjs\/Observable';\n+\n+\n+\/\/ Query options\n+export interface ListOptions {\n+ filters: Filters;\n+}\n+\n+export interface Filters {\n+ limit?: number|Observable<number>;\n+ offset?: number|Observable<number>;\n+}\n+\n+\/\/ Actions\n+export type ActionType = 'API_FETCH_SUCCESS';\n+\n+export interface Action {\n+ type: ActionType;\n+ payload?: {\n+ data: any;\n+ ref: Reference;\n+ }\n+}\n+\n+export interface Reference {\n+ collection: keyof Collections;\n+ key: number;\n+ filters: Filters;\n+}\n+\n+\/\/ Model\n+export interface Entities<T> {\n+ entities?: {\n+ [id: string]: T;\n+ };\n+ lists?: {\n+ [filters: string]: T[];\n+ };\n+};\n+\n+export const mergeEntities = (state: any, entities: any, ref: any) => {\n+ const collection = state[ref.key] || {};\n+ const filters = 'default';\n+ return { ...state, ...{\n+ [ref.key]: {\n+ entities: {\n+ ...collection.entities,\n+ ...entities\n+ },\n+ lists: {\n+ ...collection.lists,\n+ ...{\n+ [filters]: Object.keys(entities).reduce((acc, id, index) => {\n+ acc[(ref.filters.offset || 0) + index] = id;\n+ return acc;\n+ }, collection.lists ? ([...collection.lists[filters]] || []) : [])\n+ }\n+ }\n+ }\n+ }};\n+};\n+\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ threadsUnreadCount: threadUnreadCountReducer,\n+ messages: messageReducer,\n+});\n+\n+\/\/ API Backend\n+\n+export interface ApiParam {\n+ fetch: (key: string, filters: any) => {\n+ endpoint: string;\n+ params: {\n+ [key: string]: string|number;\n+ };\n+ }\n+};\n+\n+export const apiParams: { [k: string]: ApiParam } = {\n+ threads: {\n+ fetch(key, filters) {\n+ return {\n+ endpoint: 'messages\/0.1\/threads',\n+ params: {\n+ unread_count: 'true',\n+ last_message: 'true',\n+ message_details: 'true',\n+ context_details: 'true',\n+ user_details: 'true',\n+ limit: filters.limit\n+ }\n+ };\n+ }\n+ \/*push: (threadId, {message}) => ({\n+ url: '\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ body: {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ \/\/ from_user: this.selfId,??\n+ },\n+ }),*\/\n+ },\n+ messages: {\n+ fetch: (key, filters) => ({\n+ endpoint: 'messages\/0.1\/messages',\n+ params: {\n+ 'threads[]': key,\n+ }\n+ })\n+ }\n+};\n"}]},{"id":"9266743","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"69","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"69","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Message } from '.\/message.model';\n+\n+export const messageReducer = (\n+ state: Readonly<{ [threadId: string]: Entities<Message> }> = {},\n+ action: Action\n+): Readonly<{ [threadId: string]: Entities<Message> }> => {\n+\n+ if (action.payload && action.payload.ref.collection === 'messages') {\n+ console.log('messageReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS': {\n+ const { data, ref } = action.payload;\n+ const messages = data.messages.reduce((acc: any, message: any) => {\n+ acc[message.id] = message;\n+ return acc;\n+ }, {});\n+ console.log(messages);\n+ return mergeEntities(state, messages, ref);\n+ }\n+ \n+ \/*case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+ \n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+ \n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+ \n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+ \n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+ \n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }*\/\n+ \n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9266742","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9266741","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+export const RECEIVED_FROM_SOCKET = '[Message] Received from socket';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class ReceivedFromSocket implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: { thread_id: string }) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9266740","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9266739","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Filters } from '.\/store';\n+import { Collections } from '.\/collections';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private collection: keyof Collections,\n+ private filters: Filters,\n+ private store: Store<Collections>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.collection, this.filters, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ \/*action(actionType: ActionType, params): Promise<void> {\n+ this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ });\n+ \/\/ Run any side effects\n+ return Observable.of(effects[this.ref][actionType](this.key.id, params))\n+ .switchMap(({url, body}) => this.apiHttp.post(url, body))\n+ .do(this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ }))\n+ .mapTo(void 0)\n+ .toPromise();\n+ }*\/\n+\n+}\n+\n"}]},{"id":"9266738","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9266737","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"78","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"78","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Action, ListOptions, apiParams } from '.\/store'\n+import { Collections } from '.\/collections';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<Collections>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {}\n+\n+ list<c extends keyof Collections, k extends keyof Collections[c]>(\n+ collection: c,\n+ key: k|Observable<k>,\n+ options?: ListOptions\n+ ): ListObservable<Array<Collections[c][k]>> {\n+\n+ const filters = options ? options.filters : {};\n+\n+ const keyStream = key instanceof Observable ? key : Observable.of(key);\n+\n+ const filtersStream = Observable.combineLatest([\n+ filters.limit instanceof Observable ? filters.limit : Observable.of(filters.limit),\n+ filters.offset instanceof Observable ? filters.offset : Observable.of(filters.offset)\n+ ], (limit: number, offset: number) => ({ limit, offset }));\n+\n+ const queryStream = \n+ Observable.combineLatest([\n+ keyStream.do((key) => console.log('key', key)),\n+ filtersStream\n+ ])\n+\n+ const fetchStream = queryStream\n+ .switchMap(([key, filters]) => \n+ Observable.of(apiParams[collection].fetch(key, filters))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => {\n+ this.store.dispatch(<Action>{\n+ type: 'API_FETCH_SUCCESS',\n+ payload: {\n+ data,\n+ ref: { collection, key, filters }\n+ }\n+ })\n+ })\n+ );\n+\n+ \/\/ TODO: WebSocket \n+\n+ return new ListObservable(collection, filters, this.store,\n+ Observable.combineLatest([\n+ this.store,\n+ queryStream,\n+ fetchStream\n+ ])\n+ .switchMap(([, [key, filters]]: any) =>\n+ this.store.pluck(collection, key)\n+ )\n+ .distinctUntilChanged()\n+ .map(collection => (<any>collection).lists['default']\n+ .slice(filters.offset || 0)\n+ .map((id: any) => (<any>collection).entities[<string>id])\n+ )\n+\n+ );\n+ \n+ }\n+\n+ \/\/ TODO: object() => new ObjectObservable()\n+\n+}\n"}]},{"id":"9266736","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9266735","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9266734","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/collections.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Collections {\n+ threads: {\n+ [userId: string]: Thread;\n+ },\n+ threadsUnreadCount: {\n+ [userId: string]: ThreadUnreadCount\n+ },\n+ messages: {\n+ [threadId: string]: Message;\n+ }\n+};\n+\n"}]},{"id":"9266733","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.params)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result)\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid , token}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${uid};${token}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ const params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ params.set('compact', 'true');\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9266732","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n"}]},{"id":"9266731","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9266730","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n+\n"}]},{"id":"9266729","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9266728","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9266727","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ uid: number;\n+ token: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const uid = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10) || 13828506;\n+ const token = this.cookies.get(this.authConfig.authHashCookie) || 'lh%2FSLFzWC5qQN9ncUQukekjSveF%2FCl8P3vbc8OKNuKk%3D';\n+ this.next({ uid, token });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9266726","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n+\n"}]},{"id":"9266725","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9266724","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-2xhp4ghdwthsxpp432tt"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266723","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9266722","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.0\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9266721","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9266720","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9266719","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9266718","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9266717","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+This project was generated with [Angular CLI](https:\/\/github.com\/angular\/angular-cli) version 1.0.0-rc.0.\n+\n+## Development server\n+Run `ng serve` for a dev server. Navigate to `http:\/\/localhost:4200\/`. The app will automatically reload if you change any of the source files.\n+\n+## Code scaffolding\n+\n+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive\/pipe\/service\/class\/module`.\n+\n+## Build\n+\n+Run `ng build` to build the project. The build artifacts will be stored in the `dist\/` directory. Use the `-prod` flag for a production build.\n+\n+## Running unit tests\n+\n+Run `ng test` to execute the unit tests via [Karma](https:\/\/karma-runner.github.io).\n+\n+## Running end-to-end tests\n+\n+Run `ng e2e` to execute the end-to-end tests via [Protractor](http:\/\/www.protractortest.org\/).\n+Before running the tests make sure you are serving the app via `ng serve`.\n+\n+## Further help\n+\n+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https:\/\/github.com\/angular\/angular-cli\/blob\/master\/README.md).\n"}]},{"id":"9266716","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9266715","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9266714","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9266713","metadata":{"line:first":722},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"945","newLength":"946","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?mobile=true permanent;\n rewrite ^\/semm\/$ https:\/\/$host\/find\/?mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/activate.php \/local\/activate.php last;\n rewrite ^\/local\/onSignup.php \/local\/onSignup.php last;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n"}]},{"id":"9266712","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9266711","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9266710","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9266709","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266708","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-list.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266707","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9266706","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-item.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9266705","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Input } from '@angular\/core';\n import { Thread } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-item',\n template: `\n <div>{{ thread | json }}<div>\n `,\n styleUrls: ['.\/thread-item.component.less'],\n })\n export class ThreadItemComponent {\n @Input() thread: Thread;\n }\n"}]},{"id":"9266704","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":["public\/static\/modules\/messaging\/messaging.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9266703","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n import { ThreadListComponent } from '.\/thread-list.component';\n import { ThreadItemComponent } from '.\/thread-item.component';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n ],\n declarations: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n exports: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class MessagingModule {}\n"}]},{"id":"9266702","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":["public\/static\/modules\/messaging\/index.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9266701","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/messaging\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/messaging.module';\n"}]},{"id":"9266700","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9266699","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9266698","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9266697","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9266696","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { RouterModule, Routes } from '@angular\/router';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n-\n-const messagingInboxRoutes: Routes = [\n- {\n- path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forChild(messagingInboxRoutes),\n- ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class MessagingInboxRoutingModule { }\n"}]},{"id":"9266695","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9266694","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9266693","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9266692","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9266691","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9266690","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9266689","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9266688","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9266687","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9266686","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9266685","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9266684","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9266683","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9266682","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9266681","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9266680","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9266679","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9266678","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9266677","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9266676","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9266675","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"371","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9266674","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"10","delLines":"27","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1236","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"^2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9266673","metadata":{"line:first":1},"oldPath":null,"currentPath":".nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6.10\n"}]},{"id":"9266672","metadata":{"line:first":1},"oldPath":null,"currentPath":".angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"gaf-app\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"99562cd0ca1d33a5132cb132bfb5a79f46c1a057":{"commit":"99562cd0ca1d33a5132cb132bfb5a79f46c1a057","tree":"a90b746681e137aa40e21d6aa2e82be7022cb3d9","parents":["8c26bbd83a354887739377f4beb4a3e82e3905e2"],"time":"1488903326","author":"Laurent Goudet","summary":"bugz","message":"bugz","authorEmail":"laurent@freelancer.com"},"8c26bbd83a354887739377f4beb4a3e82e3905e2":{"commit":"8c26bbd83a354887739377f4beb4a3e82e3905e2","tree":"32398a01d49efebce64b2f14d55cfdf0babc5dc5","parents":["fca85f7440b205d1b05d860cae596e72cae65150"],"time":"1488902573","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"fca85f7440b205d1b05d860cae596e72cae65150":{"commit":"fca85f7440b205d1b05d860cae596e72cae65150","tree":"0b44b65f63fe3bd3a590632ccb4681afd1de402c","parents":["4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c"],"time":"1488819407","author":"Laurent Goudet","summary":"Bugz fixing","message":"Bugz fixing","authorEmail":"laurent@freelancer.com"},"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c":{"commit":"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c","tree":"e86302ebe2ecb73a3e4893f93119efd6f1ea458c","parents":["c3815d83d0278276714c527df4b976ff2c29aa19"],"time":"1488818884","author":"Laurent Goudet","summary":"Dynamic queries handling","message":"Dynamic queries handling","authorEmail":"laurent@freelancer.com"},"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"699844":{"id":"699844","revisionID":"56417","dateCreated":"1488902602","dateModified":"1488902605","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - foo","unitStatus":"1","lintStatus":"4","changes":[{"id":"9266671","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5281","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5281","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n+\n"}]},{"id":"9266670","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266669","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9266668","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9266667","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9266666","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9266665","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9266664","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9266663","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9266662","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266661","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9266660","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9266659","metadata":{"old:file:size":2238,"old:file:mime-type":"image\/x-icon","old:binary-phid":"PHID-FILE-zko5554i7mfmp2urgn7x"},"oldPath":null,"currentPath":"public\/favicon.ico","awayPaths":["webapp\/src\/favicon.ico"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266658","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-bkqoj62zrqte3bii2fm5"},"oldPath":"public\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266657","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const flnDevUser = 'laurent';\n+\n+export const environment = {\n+ production: false,\n+ authConfig: {\n+ baseUrl: `https:\/\/${flnDevUser}.syd1.fln-dev.net\/auth`,\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: `https:\/\/${flnDevUser}.syd1.fln-dev.net\/api`,\n+ ajaxBaseUrl: `https:\/\/${flnDevUser}.syd1.fln-dev.net\/ajax`,\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n+\n"}]},{"id":"9266656","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266655","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9266654","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266653","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+import 'rxjs\/add\/observable\/merge';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/merge';\n+import 'rxjs\/add\/operator\/mergeMap';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/pluck';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n"}]},{"id":"9266652","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.href = state.url;\n+ return false;\n+ }\n+}\n"}]},{"id":"9266651","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router'; \n+import { Datastore, ListObservable, Message } from '@shared\/datastore';\n+\n+@Component({\n+ template: `\n+ <div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <!--<inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>-->\n+ <\/div>\n+ \n+ <!-- <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>-->\n+ <\/div>\n+ `,\n+})\n+export class ThreadComponent {\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.route.params.map(({threadId}) => threadId)\n+ .subscribe(id => console.log(id));\n+ this.messages = this.datastore.list(\n+ 'messages',\n+ this.route.params.map(({threadId}) => threadId), {\n+ filters: {\n+ limit: 10\n+ }\n+ }\n+ );\n+ }\n+}\n"}]},{"id":"9266650","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9266649","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9266648","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread.thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9266647","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9266646","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+\n+ <fl-user-avatar [src]=\"thread.owner.avatar\"\n+ class=\"avatar\">\n+ <\/fl-user-avatar>\n+ <div class=\"body\">\n+ <div class=\"body-content-username\"\n+ *ngFor=\"let member of thread.members; let $last = last;\">\n+ {{ member.username }}<span *ngIf=\"!$last\">,<\/span>\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{ thread.message.message }}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9266645","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9266644","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9266643","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9266642","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9266641","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9266640","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9266639","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9266638","metadata":{"line:first":1,"copy:lines":{"47":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"48":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"49":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"50":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"51","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"51","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ThreadComponent,\n+ EmptyThreadComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n+\n"}]},{"id":"9266637","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router'; \n+import { Datastore, ListObservable, Thread } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <router-outlet><\/router-outlet>\n+ <\/div>\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ threadsLimit = new Subject<number>();\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.threads = this.datastore.list(\n+ 'threads',\n+ this.auth.map(({uid}) => uid.toString()), {\n+ filters: {\n+ limit: this.threadsLimit.startWith(10),\n+ }\n+ }\n+ );\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ \/\/this.threadsLimit.next(count);\n+ }\n+\n+ sendMessage(message: string) {\n+ \/\/ this.messages.action({ message });\n+ }\n+\n+ \/*createThread() {\n+ this.threads.push();\n+ }*\/\n+\n+}\n"}]},{"id":"9266636","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9266635","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",3,"-"],"7":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",6,"-"],"8":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",7,"-"],"9":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",8,"-"],"10":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",9,"-"],"24":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",16,"-"],"25":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",17,"-"],"26":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",18,"-"],"27":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",19,"-"],"28":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",20,"-"],"29":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",21,"-"],"30":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",25,"-"],"31":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",26,"-"],"32":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",27,"-"],"33":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",28,"-"],"34":["public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts",29,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { RouterModule, Routes } from '@angular\/router';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { EmptyThreadComponent } from '.\/empty-thread.component';\n+import { ThreadComponent } from '.\/thread.component';\n+import { AuthGuard } from '..\/auth-guard.service';\n+\n+const messagingInboxRoutes: Routes = [\n+ {\n+ path: '',\n+ canActivate: [AuthGuard],\n+ component: MessagingInboxComponent,\n+ children: [\n+ {\n+ path: '',\n+ component: EmptyThreadComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: ThreadComponent\n+ }\n+ ]\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forChild(messagingInboxRoutes),\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class MessagingInboxRoutingModule { }\n"}]},{"id":"9266634","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message of messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9266633","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9266632","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9266631","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9266630","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message: EventEmitter<string>;\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9266629","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9266628","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9266627","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9266626","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/empty-thread.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: `\n+ <div>\n+ NO THREAD SELECTED\n+ <\/div>\n+ `,\n+})\n+export class EmptyThreadComponent {\n+\n+}\n"}]},{"id":"9266625","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9266624","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9266623","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9266622","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9266621","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.uid) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9266620","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9266619","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9266618","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9266617","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"36","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"36","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages-new',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages-new',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n+\n"}]},{"id":"9266616","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9266615","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/user-avatar.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular\/core';\n+@Component({\n+ selector: 'fl-user-avatar',\n+ template: `\n+ <img [src]=\"avatarUrl\" \/>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class UserAvatarComponent implements OnChanges {\n+ private avatarUrl: string;\n+ @Input() src: string;\n+\n+ constructor() {}\n+\n+ ngOnChanges() {\n+ if (this.src) {\n+ this.avatarUrl = `https:\/\/laurent.syd1.fln-dev.net${this.src}`;\n+ }\n+ }\n+\n+}\n"}]},{"id":"9266614","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266613","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n+import { UserAvatarComponent } from '.\/user-avatar.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n+ UserAvatarComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9266612","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9266611","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9266610","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9266609","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+ \n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+ \n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+ \n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+ \n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+ \n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+ \n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver; \n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9266608","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9266607","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9266606","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9266605","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9266604","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9266603","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9266602","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9266601","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9266600","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use \n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ \n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9266599","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9266598","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Thread, ThreadUnreadCount } from '.\/thread.model';\n+\n+export const threadReducer = (\n+ state: Readonly<{ [userId: string]: Entities<Thread> }> = {},\n+ action: Action\n+): Readonly<{ [userId: string]: Entities<Thread> }> => {\n+\n+ if (action.payload && action.payload.ref.collection === 'threads') {\n+ console.log('threadReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ Denoramlize the Thread API response\n+ const contextDetails = data.context_details;\n+ const users = data.users;\n+ const threads = data.threads.reduce((acc: any, thread: any) => {\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.project = contextDetails.projects[context.id];\n+ } else {\n+ context.contest = contextDetails.contests[context.id];\n+ }\n+ context.id = undefined;\n+ const members = thread.thread.members.map((memberId: number) => {\n+ return { ...users[memberId], ...{\n+ \/\/ Avatar CDN URLs returned by the API are crap\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ });\n+ const owner = { ...users[thread.thread.owner], ...{\n+ avatar_cdn: undefined,\n+ avatar_large_cdn: undefined\n+ }};\n+ const threadInner = { ...thread.thread, context, members, owner };\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ acc[thread.id] = { ...thread , ...{ thread: threadInner }, messages };\n+ return acc;\n+ }, {});\n+\n+ return mergeEntities(state, threads, ref);\n+\n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+ \n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n+export const threadUnreadCountReducer =\n+ (state: Entities<ThreadUnreadCount> = {}, action: Action): Entities<ThreadUnreadCount> => {\n+ if (action.payload && action.payload.ref.collection === 'threads') {\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ return mergeEntities(state, data.unread_thread_count, ref);\n+ return state;\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9266597","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface ThreadUnreadCount {\n+ unread_thread_count: number;\n+}\n+ \n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ type: 'project' | 'contest';\n+ contest?: ThreadContest;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD \n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9266596","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"126","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"126","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+import { Collections } from '.\/collections';\n+\n+import { Thread, ThreadUnreadCount } from '.\/thread\/thread.model';\n+import { threadReducer, threadUnreadCountReducer } from '.\/thread\/thread.reducer';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+\n+import { Observable } from 'rxjs\/Observable';\n+\n+\n+\/\/ Query options\n+export interface ListOptions {\n+ filters: Filters;\n+}\n+\n+export interface Filters {\n+ limit?: number|Observable<number>;\n+ offset?: number|Observable<number>;\n+}\n+\n+\/\/ Actions\n+export type ActionType = 'API_FETCH_SUCCESS';\n+\n+export interface Action {\n+ type: ActionType;\n+ payload?: {\n+ data: any;\n+ ref: Reference;\n+ }\n+}\n+\n+export interface Reference {\n+ collection: keyof Collections;\n+ key: number;\n+ filters: Filters;\n+}\n+\n+\/\/ Model\n+export interface Entities<T> {\n+ entities?: {\n+ [id: string]: T;\n+ };\n+ lists?: {\n+ [filters: string]: T[];\n+ };\n+};\n+\n+export const mergeEntities = (state: any, entities: any, ref: any) => {\n+ const collection = state[ref.key] || {};\n+ const filters = 'default';\n+ return { ...state, ...{\n+ [ref.key]: {\n+ entities: {\n+ ...collection.entities,\n+ ...entities\n+ },\n+ lists: {\n+ ...collection.lists,\n+ ...{\n+ [filters]: Object.keys(entities).reduce((acc, id, index) => {\n+ acc[(ref.filters.offset || 0) + index] = id;\n+ return acc;\n+ }, collection.lists ? ([...collection.lists[filters]] || []) : [])\n+ }\n+ }\n+ }\n+ }};\n+};\n+\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ threadsUnreadCount: threadUnreadCountReducer,\n+ messages: messageReducer,\n+});\n+\n+\/\/ API Backend\n+\n+export interface ApiParam {\n+ fetch: (key: string, filters: Filters) => {\n+ endpoint: string;\n+ params: {\n+ [key: string]: string;\n+ };\n+ }\n+};\n+\n+export const apiParams: { [k: string]: ApiParam } = {\n+ threads: {\n+ fetch(key, filters) {\n+ return {\n+ endpoint: 'messages\/0.1\/threads',\n+ params: {\n+ unread_count: 'true',\n+ last_message: 'true',\n+ message_details: 'true',\n+ context_details: 'true',\n+ user_details: 'true',\n+ limit: filters.limit.toString()\n+ }\n+ };\n+ }\n+ \/*push: (threadId, {message}) => ({\n+ url: '\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ body: {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ \/\/ from_user: this.selfId,??\n+ },\n+ }),*\/\n+ },\n+ messages: {\n+ fetch: (key, filters) => ({\n+ endpoint: 'messages\/0.1\/messages',\n+ params: {\n+ 'threads[]': key,\n+ }\n+ })\n+ }\n+};\n"}]},{"id":"9266595","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"69","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"69","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action, Entities, mergeEntities } from '..\/store';\n+import { Message } from '.\/message.model';\n+\n+export const messageReducer = (\n+ state: Readonly<{ [threadId: string]: Entities<Message> }> = {},\n+ action: Action\n+): Readonly<{ [threadId: string]: Entities<Message> }> => {\n+\n+ if (action.payload && action.payload.ref.collection === 'messages') {\n+ console.log('messageReducer', action);\n+ switch (action.type) {\n+ case 'API_FETCH_SUCCESS': {\n+ const { data, ref } = action.payload;\n+ const messages = data.messages.reduce((acc: any, message: any) => {\n+ acc[message.id] = message;\n+ return acc;\n+ }, {});\n+ console.log(messages);\n+ return mergeEntities(state, messages, ref);\n+ }\n+ \n+ \/*case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+ \n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+ \n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+ \n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+ \n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+ \n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }*\/\n+ \n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9266594","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9266593","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+export const RECEIVED_FROM_SOCKET = '[Message] Received from socket';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class ReceivedFromSocket implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: { thread_id: string }) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9266592","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9266591","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"40","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Collection, RootModel, Query } from '.\/store';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private collection: Collection,\n+ private query: Query,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.collection, this.query, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ \/*action(actionType: ActionType, params): Promise<void> {\n+ this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ });\n+ \/\/ Run any side effects\n+ return Observable.of(effects[this.ref][actionType](this.key.id, params))\n+ .switchMap(({url, body}) => this.apiHttp.post(url, body))\n+ .do(this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ }))\n+ .mapTo(void 0)\n+ .toPromise();\n+ }*\/\n+\n+}\n+\n"}]},{"id":"9266590","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9266589","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"78","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"78","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Action, ListOptions, apiParams } from '.\/store'\n+import { Collections } from '.\/collections';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<Collections>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {}\n+\n+ list<c extends keyof Collections, k extends keyof Collections[c]>(\n+ collection: c,\n+ key: k|Observable<k>,\n+ options?: ListOptions\n+ ): ListObservable<Array<Collections[c][k]>> {\n+\n+ const filters = options ? options.filters : {};\n+\n+ const keyStream = key instanceof Observable ? key : Observable.of(key);\n+\n+ const filtersStream = Observable.combineLatest([\n+ filters.limit instanceof Observable ? filters.limit : Observable.of(filters.limit),\n+ filters.offset instanceof Observable ? filters.offset : Observable.of(filters.offset)\n+ ], (limit: number, offset: number) => ({ limit, offset }));\n+\n+ const queryStream = \n+ Observable.combineLatest([\n+ keyStream.do((key) => console.log('key', key)),\n+ filtersStream\n+ ])\n+\n+ const fetchStream = queryStream\n+ .switchMap(([key, filters]) => \n+ Observable.of(apiParams[collection].fetch(key, filters))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => {\n+ this.store.dispatch(<Action>{\n+ type: 'API_FETCH_SUCCESS',\n+ payload: {\n+ data,\n+ ref: { collection, key, filters }\n+ }\n+ })\n+ })\n+ );\n+\n+ \/\/ TODO: WebSocket \n+\n+ return new ListObservable(collection, filters, this.store,\n+ Observable.combineLatest([\n+ this.store,\n+ queryStream,\n+ fetchStream\n+ ])\n+ .switchMap(([, [key, filters]]: any) =>\n+ this.store.pluck(collection, key)\n+ )\n+ .distinctUntilChanged()\n+ .map(collection => (<any>collection).lists['default']\n+ .slice(filters.offset || 0)\n+ .map((id: any) => (<any>collection).entities[<string>id])\n+ )\n+\n+ );\n+ \n+ }\n+\n+ \/\/ TODO: object() => new ObjectObservable()\n+\n+}\n"}]},{"id":"9266588","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9266587","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9266586","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/collections.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Collections {\n+ threads: {\n+ [userId: string]: Thread;\n+ },\n+ threadsUnreadCount: {\n+ [userId: string]: ThreadUnreadCount\n+ },\n+ messages: {\n+ [threadId: string]: Message;\n+ }\n+};\n+\n"}]},{"id":"9266585","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.params)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result)\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid , token}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${uid};${token}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ const params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ params.set('compact', 'true');\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9266584","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n"}]},{"id":"9266583","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9266582","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n+\n"}]},{"id":"9266581","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9266580","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9266579","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ uid: number;\n+ token: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const uid = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10) || 13828506;\n+ const token = this.cookies.get(this.authConfig.authHashCookie) || 'lh%2FSLFzWC5qQN9ncUQukekjSveF%2FCl8P3vbc8OKNuKk%3D';\n+ this.next({ uid, token });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9266578","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n+\n"}]},{"id":"9266577","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9266576","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-kx476xpqqaewrolrbqqi"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266575","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9266574","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.0\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9266573","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9266572","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9266571","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9266570","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9266569","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+This project was generated with [Angular CLI](https:\/\/github.com\/angular\/angular-cli) version 1.0.0-rc.0.\n+\n+## Development server\n+Run `ng serve` for a dev server. Navigate to `http:\/\/localhost:4200\/`. The app will automatically reload if you change any of the source files.\n+\n+## Code scaffolding\n+\n+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive\/pipe\/service\/class\/module`.\n+\n+## Build\n+\n+Run `ng build` to build the project. The build artifacts will be stored in the `dist\/` directory. Use the `-prod` flag for a production build.\n+\n+## Running unit tests\n+\n+Run `ng test` to execute the unit tests via [Karma](https:\/\/karma-runner.github.io).\n+\n+## Running end-to-end tests\n+\n+Run `ng e2e` to execute the end-to-end tests via [Protractor](http:\/\/www.protractortest.org\/).\n+Before running the tests make sure you are serving the app via `ng serve`.\n+\n+## Further help\n+\n+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https:\/\/github.com\/angular\/angular-cli\/blob\/master\/README.md).\n"}]},{"id":"9266568","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9266567","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9266566","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9266565","metadata":{"line:first":722},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"945","newLength":"946","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?mobile=true permanent;\n rewrite ^\/semm\/$ https:\/\/$host\/find\/?mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/activate.php \/local\/activate.php last;\n rewrite ^\/local\/onSignup.php \/local\/onSignup.php last;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n"}]},{"id":"9266564","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9266563","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9266562","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9266561","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266560","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-list.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9266559","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9266558","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-item.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9266557","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Input } from '@angular\/core';\n import { Thread } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-item',\n template: `\n <div>{{ thread | json }}<div>\n `,\n styleUrls: ['.\/thread-item.component.less'],\n })\n export class ThreadItemComponent {\n @Input() thread: Thread;\n }\n"}]},{"id":"9266556","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":["public\/static\/modules\/messaging\/messaging.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9266555","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n import { ThreadListComponent } from '.\/thread-list.component';\n import { ThreadItemComponent } from '.\/thread-item.component';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n ],\n declarations: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n exports: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class MessagingModule {}\n"}]},{"id":"9266554","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":["public\/static\/modules\/messaging\/index.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9266553","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/messaging\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/messaging.module';\n"}]},{"id":"9266552","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9266551","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9266550","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9266549","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9266548","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { RouterModule, Routes } from '@angular\/router';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n-\n-const messagingInboxRoutes: Routes = [\n- {\n- path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forChild(messagingInboxRoutes),\n- ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class MessagingInboxRoutingModule { }\n"}]},{"id":"9266547","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9266546","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9266545","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9266544","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9266543","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9266542","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9266541","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9266540","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9266539","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9266538","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9266537","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9266536","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9266535","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9266534","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9266533","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9266532","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9266531","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9266530","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9266529","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9266528","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9266527","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"371","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9266526","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"10","delLines":"27","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1236","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"^2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9266525","metadata":{"line:first":1},"oldPath":null,"currentPath":".nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6.10\n"}]},{"id":"9266524","metadata":{"line:first":1},"oldPath":null,"currentPath":".angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"gaf-app\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"8c26bbd83a354887739377f4beb4a3e82e3905e2":{"commit":"8c26bbd83a354887739377f4beb4a3e82e3905e2","tree":"32398a01d49efebce64b2f14d55cfdf0babc5dc5","parents":["fca85f7440b205d1b05d860cae596e72cae65150"],"time":"1488902573","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"fca85f7440b205d1b05d860cae596e72cae65150":{"commit":"fca85f7440b205d1b05d860cae596e72cae65150","tree":"0b44b65f63fe3bd3a590632ccb4681afd1de402c","parents":["4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c"],"time":"1488819407","author":"Laurent Goudet","summary":"Bugz fixing","message":"Bugz fixing","authorEmail":"laurent@freelancer.com"},"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c":{"commit":"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c","tree":"e86302ebe2ecb73a3e4893f93119efd6f1ea458c","parents":["c3815d83d0278276714c527df4b976ff2c29aa19"],"time":"1488818884","author":"Laurent Goudet","summary":"Dynamic queries handling","message":"Dynamic queries handling","authorEmail":"laurent@freelancer.com"},"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"699328":{"id":"699328","revisionID":"56417","dateCreated":"1488819503","dateModified":"1488819506","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - Bugz fixing","unitStatus":"1","lintStatus":"4","changes":[{"id":"9262889","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5281","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5281","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n+\n"}]},{"id":"9262888","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262887","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9262886","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9262885","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9262884","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9262883","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9262882","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9262881","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9262880","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262879","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9262878","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9262877","metadata":{"old:file:size":2238,"old:file:mime-type":"image\/x-icon","old:binary-phid":"PHID-FILE-rfxrnrvsulb6p6zpqzvd"},"oldPath":null,"currentPath":"public\/favicon.ico","awayPaths":["webapp\/src\/favicon.ico"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262876","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-ku2v23kjz7lig3geftnm"},"oldPath":"public\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262875","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const flnDevUser = 'laurent-fli';\n+\n+export const environment = {\n+ production: false,\n+ authConfig: {\n+ baseUrl: `https:\/\/${flnDevUser}.syd1.fln-dev.net\/auth`,\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: `https:\/\/${flnDevUser}.syd1.fln-dev.net\/api`,\n+ ajaxBaseUrl: `https:\/\/${flnDevUser}.syd1.fln-dev.net\/ajax`,\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n+\n"}]},{"id":"9262874","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262873","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9262872","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262871","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+import 'rxjs\/add\/observable\/merge';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/pluck';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n"}]},{"id":"9262870","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.href = state.url;\n+ return false;\n+ }\n+}\n"}]},{"id":"9262869","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9262868","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9262867","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9262866","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9262865","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+ <img src=\"{{thread.avatarUrl}}\" class=\"avatar\">\n+ <div class=\"body\">\n+ <div class=\"body-content-username\">\n+ {{thread.username}}\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{thread.lastMessage}}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9262864","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9262863","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9262862","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9262861","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9262860","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9262859","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9262858","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9262857","metadata":{"line:first":1,"copy:lines":{"43":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"44":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"45":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"46":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"47","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"47","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n+\n"}]},{"id":"9262856","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"81","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"81","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router'; \n+import { Datastore, ListObservable, Thread, Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ {{ (threads | async) | json }}\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <!--\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ threadsLimit = new Subject<number>();\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.threads = this.datastore.list('threads', this.auth.map(({uid}) => uid), {\n+ query: {\n+ limit: this.threadsLimit.startWith(10),\n+ }\n+ });\n+ \/*this.messages = this.datastore.list('messages', {\n+ query: {\n+ threads: this.route.data.map(threadId => [threadId]),\n+ offset: 0,\n+ limit: 50\n+ }\n+ });*\/\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.next(count);\n+ }\n+\n+ sendMessage(message: string) {\n+ \/\/ this.messages.action({ message });\n+ }\n+\n+ \/*createThread() {\n+ this.threads.push();\n+ }*\/\n+\n+}\n"}]},{"id":"9262855","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9262854","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":["webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262853","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"11","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"29","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { RouterModule, Routes } from '@angular\/router';\n import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n+import { AuthGuard } from '..\/auth-guard.service';\n \n const messagingInboxRoutes: Routes = [\n {\n path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n+ canActivate: [AuthGuard],\n+ children: [\n+ {\n+ path: '',\n+ component: MessagingInboxComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: MessagingInboxComponent\n+ }\n+ ]\n+ }\n ];\n \n @NgModule({\n imports: [\n RouterModule.forChild(messagingInboxRoutes),\n ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n exports: [\n RouterModule,\n ],\n })\n export class MessagingInboxRoutingModule { }\n"}]},{"id":"9262852","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9262851","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9262850","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9262849","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9262848","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message: EventEmitter<string>;\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9262847","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9262846","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9262845","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9262844","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9262843","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9262842","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9262841","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9262840","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.uid) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9262839","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9262838","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9262837","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9262836","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"36","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"36","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages-new',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages-new',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n+\n"}]},{"id":"9262835","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9262834","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262833","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9262832","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9262831","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9262830","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9262829","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+ \n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+ \n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+ \n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+ \n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+ \n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+ \n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver; \n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9262828","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9262827","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9262826","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9262825","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9262824","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9262823","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9262822","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9262821","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9262820","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use \n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ \n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9262819","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9262818","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"97","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"97","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Entities, Action } from '..\/store';\n+import { Thread, ThreadUnreadCount } from '.\/thread.model';\n+\n+export const threadReducer =\n+ (state: any = {}, action: Action): any => {\n+\n+ console.log(action);\n+\n+ if (action.payload && action.payload.ref.collection === 'threads') {\n+ switch (action.type) {\n+ case 'API_LOAD_SUCCESS':\n+\n+\n+ const { data, ref } = action.payload;\n+ \/\/ Denoramlize the Thread API response to inline Users, Project &\n+ \/\/ Contest details\n+ const contextDetails = data.context_details;\n+ const users = data.users;\n+ const oldThreads = state.entities\n+ const threads = data.threads.reduce((acc: any, thread: any) => {\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.project = contextDetails.projects[context.id];\n+ } else {\n+ context.contest = contextDetails.contests[context.id];\n+ }\n+ const members = thread.thread.members.map((memberId: number) => users[memberId]);\n+ const owner = users[thread.thread.owner];\n+ const threadInner = { ...thread.thread, context, members };\n+\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ acc[thread.id] = { ...thread , threadInner, messages };\n+ return acc;\n+ }, {});\n+\n+\n+ const entities = threads;\n+ const collection = state[ref.key] || {};\n+ const filters = 'default';\n+ const foo = { ...state, ...{\n+ [ref.key]: {\n+ entities: {\n+ ...collection.entities,\n+ ...entities\n+ },\n+ lists: {\n+ ...collection.lists,\n+ ...{\n+ [filters]: Object.keys(entities).reduce((acc, id, index) => {\n+ acc[(ref.query.offset || 0) + index] = id;\n+ return acc;\n+ }, collection.lists ? ([...collection.lists[filters]] || []) : [])\n+ }\n+ }\n+ }\n+ }};\n+\n+ console.log('foo', foo);\n+ return foo;\n+\n+\n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+ \n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n+export const threadUnreadCountReducer =\n+ (state: Entities<ThreadUnreadCount> = {}, action: Action): Entities<ThreadUnreadCount> => {\n+ if (action.payload && action.payload.ref.collection === 'threads') {\n+ switch (action.type) {\n+ case 'API_LOAD_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ return mergeEntities(state, data.unread_thread_count, ref);\n+ return state;\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9262817","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface ThreadUnreadCount {\n+ unread_thread_count: number;\n+}\n+ \n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ type: 'project' | 'contest';\n+ contest?: ThreadContest;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD \n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9262816","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const threadEffects = {\n+ list(query: any) {\n+ return {\n+ endpoint: 'messages\/0.1\/threads',\n+ defaultParams: {\n+ unread_count: true,\n+ last_message: true,\n+ message_details: true,\n+ context_details: true,\n+ user_details: true,\n+ }\n+ };\n+ }\n+ \/*push: (threadId, {message}) => ({\n+ url: '\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ body: {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ \/\/ from_user: this.selfId,??\n+ },\n+ }),*\/\n+};\n+\n"}]},{"id":"9262815","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"101","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"101","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+\n+import { Thread, ThreadUnreadCount } from '.\/thread\/thread.model';\n+import { threadReducer, threadUnreadCountReducer } from '.\/thread\/thread.reducer';\n+import { threadEffects } from '.\/thread\/thread.effects';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+import { messageEffects } from '.\/message\/message.effects';\n+\n+import { Observable } from 'rxjs\/Observable';\n+\n+\n+\n+export interface ListOptions {\n+ query: Query;\n+}\n+\n+export interface Query {\n+ limit?: number|Observable<number>;\n+ offset?: number|Observable<number>;\n+}\n+\n+\n+export interface Reference {\n+ collection: Collection;\n+ key: number;\n+ query: {\n+ limit?: number;\n+ offset?: number;\n+ }\n+}\n+\n+\n+\n+\/\/ Model\n+export interface Entities<T> {\n+ entities?: {\n+ [id: string]: T;\n+ };\n+ lists?: {\n+ [filters: string]: T[];\n+ };\n+};\n+\n+export type Collection = keyof Collections;\n+\n+export interface Collections {\n+ threads: {\n+ [userId: string]: Entities<Thread>;\n+ },\n+ threadsUnreadCount: {\n+ [userId: string]: Entities<ThreadUnreadCount>\n+ },\n+ messages: {\n+ [threadId: string]: Entities<Message>;\n+ }\n+};\n+\n+\/*export const mergeCollection = (collection, newCollection, ref) => {\n+ \n+\n+ return {\n+\n+ const queryString = JSON.stringify(query);\n+ const key = ref.key.toString();\n+ const offset = offset\n+ return {\n+ [key]: {\n+ [queryString]: data\n+ }\n+ }\n+};*\/\n+\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ threadsUnreadCount: threadUnreadCountReducer,\n+ messages: messageReducer,\n+});\n+\n+\/\/ Effects\n+export interface Effect<T> {\n+ [collection: string]: any; \/\/ FIXME type that\n+}\n+\n+export const effects = {\n+ threads: threadEffects,\n+ messages: messageEffects,\n+};\n+\n+\n+\/\/ Actions\n+export interface Action {\n+ type: string;\n+ payload?: {\n+ data: any;\n+ ref: Reference;\n+ }\n+}\n"}]},{"id":"9262814","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"62","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"62","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const messageReducer = (\n+ state: any = {}, action: any\n+): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_MESSAGES': {\n+ const newThreads: any = {};\n+ action.payload.forEach((message: any) => {\n+ const messageList: Array<any> = (\n+ newThreads[message.thread_id] || state[message.thread_id] || []\n+ ).filter((m: any) => m.id !== message.id);\n+ messageList.push(message);\n+ newThreads[message.thread_id] = messageList;\n+ });\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9262813","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9262812","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const messageEffects = {\n+ list: (query: any) => ({\n+ api: 'messages\/0.1\/messages',\n+ search: {\n+ 'threads[]': query.threadId,\n+ }\n+ })\n+};\n"}]},{"id":"9262811","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+export const RECEIVED_FROM_SOCKET = '[Message] Received from socket';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class ReceivedFromSocket implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: { thread_id: string }) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9262810","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9262809","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"40","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Collection, RootModel, Query } from '.\/store';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private collection: Collection,\n+ private query: Query,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.collection, this.query, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ \/*action(actionType: ActionType, params): Promise<void> {\n+ this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ });\n+ \/\/ Run any side effects\n+ return Observable.of(effects[this.ref][actionType](this.key.id, params))\n+ .switchMap(({url, body}) => this.apiHttp.post(url, body))\n+ .do(this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ }))\n+ .mapTo(void 0)\n+ .toPromise();\n+ }*\/\n+\n+}\n+\n"}]},{"id":"9262808","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9262807","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Collection, Collections, ListOptions, effects } from '.\/store'\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<Collections>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {}\n+\n+ \/\/ FIXME: type that function!\n+ \/*list<a extends keyof T, b extends keyof T[a]>(collection: a,\n+ key: b|Observable<b>,\n+ options?: ListOptions): RootModel<T[a][b]> {*\/\n+\n+ list(collection: Collection,\n+ key: number|Observable<number>,\n+ options?: ListOptions) {\n+\n+ const query = options ? options.query : {};\n+ const keyObservable = key instanceof Observable ? key : Observable.of(key);\n+ const queryObservable = Observable.combineLatest([\n+ query.limit instanceof Observable ? query.limit : Observable.of(query.limit),\n+ query.offset instanceof Observable ? query.offset : Observable.of(query.offset)\n+ ], (limit: number, offset: number) => ({ limit, offset }));\n+\n+ return new ListObservable(collection, query, this.store,\n+ Observable.combineLatest([keyObservable, queryObservable])\n+ .switchMap(([key, query]) =>\n+ this.store.pluck(collection, key.toString())\n+ .distinctUntilChanged()\n+ .combineLatest([\n+ Observable.of((<any>effects)[collection].list(key, query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => this.store.dispatch({\n+ type: 'API_LOAD_SUCCESS',\n+ payload: {\n+ data,\n+ ref: { collection, key, query }\n+ }\n+ }))\n+ .mapTo({}),\n+ ], (state) => state)\n+ .filter(entities => entities !== undefined)\n+ .map(collection => (<any>collection).lists['default']\n+ .slice(query.offset || 0)\n+ .map((id: any) => (<any>collection).entities[<string>id])\n+ )\n+ )\n+ );\n+ \n+ \/\/return Observable.combineLatest([\n+ \/\/ this.store.select(collection),\n+ \/*Observable.of(effects[collection].live(query))\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocket.connect())\n+ .do(data => this.store.dispatch({\n+ type: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { collection, query, data }\n+ })),*\/\n+ \/\/], (state) => state)\n+ \/\/.switchMap(source => new ListObservable(collection, query, this.store, source));*\/\n+ }\n+\n+ \/*object(ref: Document|Path) {\n+ const path = Array.isArray(ref) ? ref : [ref];\n+\n+ return Observable.combineLatest([\n+ this.store.pluck(...path)\n+ .distinctUntilChanged(),\n+ Observable.of(effects[path[0]].get())\n+ .filter(x => x)\n+ .switchMap(({url, search}) => this.apiHttp.get(url, {search}))\n+ .do((data) => this.store.dispatch({\n+ action: 'API_LOAD_SUCCESS',\n+ payload: { path, data },\n+ })),\n+ Observable.of(effects[path[0]].live())\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocket())\n+ .do(data => this.store.dispatch({\n+ action: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { path, query, data },\n+ })),\n+ ], (state) => state\n+ ).map(source => new ActionableObservable(path, this.store, source));\n+ }*\/\n+\n+}\n"}]},{"id":"9262806","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9262805","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9262804","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"70","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"70","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.defaultParams)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result)\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid , token}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${uid};${token}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ let params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9262803","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9262802","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n+\n"}]},{"id":"9262801","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9262800","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9262799","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ uid: number;\n+ token: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const uid = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10) || 13828506;\n+ const token = this.cookies.get(this.authConfig.authHashCookie) || 'lh%2FSLFzWC5qQN9ncUQukekjSveF%2FCl8P3vbc8OKNuKk%3D';\n+ this.next({ uid, token });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9262798","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n+\n"}]},{"id":"9262797","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9262796","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-u2646gy63f6iomqtqjyc"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262795","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9262794","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.0\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9262793","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9262792","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9262791","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9262790","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9262789","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+This project was generated with [Angular CLI](https:\/\/github.com\/angular\/angular-cli) version 1.0.0-rc.0.\n+\n+## Development server\n+Run `ng serve` for a dev server. Navigate to `http:\/\/localhost:4200\/`. The app will automatically reload if you change any of the source files.\n+\n+## Code scaffolding\n+\n+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive\/pipe\/service\/class\/module`.\n+\n+## Build\n+\n+Run `ng build` to build the project. The build artifacts will be stored in the `dist\/` directory. Use the `-prod` flag for a production build.\n+\n+## Running unit tests\n+\n+Run `ng test` to execute the unit tests via [Karma](https:\/\/karma-runner.github.io).\n+\n+## Running end-to-end tests\n+\n+Run `ng e2e` to execute the end-to-end tests via [Protractor](http:\/\/www.protractortest.org\/).\n+Before running the tests make sure you are serving the app via `ng serve`.\n+\n+## Further help\n+\n+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https:\/\/github.com\/angular\/angular-cli\/blob\/master\/README.md).\n"}]},{"id":"9262788","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9262787","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9262786","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9262785","metadata":{"line:first":722},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"945","newLength":"946","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?mobile=true permanent;\n rewrite ^\/semm\/$ https:\/\/$host\/find\/?mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/activate.php \/local\/activate.php last;\n rewrite ^\/local\/onSignup.php \/local\/onSignup.php last;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n"}]},{"id":"9262784","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9262783","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9262782","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9262781","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262780","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-list.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262779","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9262778","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-item.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9262777","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Input } from '@angular\/core';\n import { Thread } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-item',\n template: `\n <div>{{ thread | json }}<div>\n `,\n styleUrls: ['.\/thread-item.component.less'],\n })\n export class ThreadItemComponent {\n @Input() thread: Thread;\n }\n"}]},{"id":"9262776","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":["public\/static\/modules\/messaging\/messaging.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9262775","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n import { ThreadListComponent } from '.\/thread-list.component';\n import { ThreadItemComponent } from '.\/thread-item.component';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n ],\n declarations: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n exports: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class MessagingModule {}\n"}]},{"id":"9262774","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":["public\/static\/modules\/messaging\/index.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9262773","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/messaging\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/messaging.module';\n"}]},{"id":"9262772","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9262771","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9262770","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9262769","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9262768","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9262767","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9262766","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9262765","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9262764","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9262763","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9262762","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9262761","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9262760","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9262759","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9262758","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9262757","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9262756","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9262755","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9262754","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9262753","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9262752","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9262751","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9262750","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9262749","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9262748","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"371","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9262747","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"10","delLines":"27","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1236","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"^2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9262746","metadata":{"line:first":1},"oldPath":null,"currentPath":".nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6.10\n"}]},{"id":"9262745","metadata":{"line:first":1},"oldPath":null,"currentPath":".angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"gaf-app\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"fca85f7440b205d1b05d860cae596e72cae65150":{"commit":"fca85f7440b205d1b05d860cae596e72cae65150","tree":"0b44b65f63fe3bd3a590632ccb4681afd1de402c","parents":["4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c"],"time":"1488819407","author":"Laurent Goudet","summary":"Bugz fixing","message":"Bugz fixing","authorEmail":"laurent@freelancer.com"},"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c":{"commit":"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c","tree":"e86302ebe2ecb73a3e4893f93119efd6f1ea458c","parents":["c3815d83d0278276714c527df4b976ff2c29aa19"],"time":"1488818884","author":"Laurent Goudet","summary":"Dynamic queries handling","message":"Dynamic queries handling","authorEmail":"laurent@freelancer.com"},"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"699327":{"id":"699327","revisionID":"56417","dateCreated":"1488818927","dateModified":"1488818929","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - Dynamic queries handling","unitStatus":"1","lintStatus":"4","changes":[{"id":"9262744","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5281","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5281","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n+\n"}]},{"id":"9262743","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262742","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9262741","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9262740","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9262739","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9262738","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9262737","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9262736","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9262735","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262734","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9262733","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9262732","metadata":{"old:file:size":2238,"old:file:mime-type":"image\/x-icon","old:binary-phid":"PHID-FILE-426dn6gdcsjetiddrkh4"},"oldPath":null,"currentPath":"public\/favicon.ico","awayPaths":["webapp\/src\/favicon.ico"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262731","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-tkisikxtvbogiqkmkl4k"},"oldPath":"public\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262730","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const flnDevUser = 'laurent-fli';\n+\n+export const environment = {\n+ production: false,\n+ authConfig: {\n+ baseUrl: `https:\/\/${flnDevUser}.syd1.fln-dev.net\/auth`,\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: `https:\/\/${flnDevUser}.syd1.fln-dev.net\/api`,\n+ ajaxBaseUrl: `https:\/\/${flnDevUser}.syd1.fln-dev.net\/ajax`,\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n+\n"}]},{"id":"9262729","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262728","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9262727","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262726","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+import 'rxjs\/add\/observable\/merge';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/pluck';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n"}]},{"id":"9262725","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.href = state.url;\n+ return false;\n+ }\n+}\n"}]},{"id":"9262724","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9262723","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9262722","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9262721","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9262720","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+ <img src=\"{{thread.avatarUrl}}\" class=\"avatar\">\n+ <div class=\"body\">\n+ <div class=\"body-content-username\">\n+ {{thread.username}}\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{thread.lastMessage}}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9262719","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9262718","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9262717","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9262716","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9262715","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9262714","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9262713","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9262712","metadata":{"line:first":1,"copy:lines":{"43":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"44":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"45":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"46":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"47","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"47","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n+\n"}]},{"id":"9262711","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"81","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"81","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router'; \n+import { Datastore, ListObservable, Thread, Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ {{ (threads | async) | json }}\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <!--\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ threadsLimit = new Subject<number>();\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private auth: Auth,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.threads = this.datastore.list('threads', this.auth.map(({uid}) => uid), {\n+ query: {\n+ limit: this.threadsLimit.startWith(10),\n+ }\n+ });\n+ \/*this.messages = this.datastore.list('messages', {\n+ query: {\n+ threads: this.route.data.map(threadId => [threadId]),\n+ offset: 0,\n+ limit: 50\n+ }\n+ });*\/\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.next(count);\n+ }\n+\n+ sendMessage(message: string) {\n+ \/\/ this.messages.action({ message });\n+ }\n+\n+ \/*createThread() {\n+ this.threads.push();\n+ }*\/\n+\n+}\n"}]},{"id":"9262710","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9262709","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":["webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262708","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"11","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"29","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { RouterModule, Routes } from '@angular\/router';\n import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n+import { AuthGuard } from '..\/auth-guard.service';\n \n const messagingInboxRoutes: Routes = [\n {\n path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n+ canActivate: [AuthGuard],\n+ children: [\n+ {\n+ path: '',\n+ component: MessagingInboxComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: MessagingInboxComponent\n+ }\n+ ]\n+ }\n ];\n \n @NgModule({\n imports: [\n RouterModule.forChild(messagingInboxRoutes),\n ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n exports: [\n RouterModule,\n ],\n })\n export class MessagingInboxRoutingModule { }\n"}]},{"id":"9262707","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9262706","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9262705","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9262704","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9262703","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message: EventEmitter<string>;\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9262702","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9262701","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9262700","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9262699","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9262698","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9262697","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9262696","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9262695","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.uid) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9262694","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9262693","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9262692","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9262691","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"36","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"36","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages-new',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages-new',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n+\n"}]},{"id":"9262690","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9262689","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262688","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9262687","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9262686","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9262685","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9262684","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+ \n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+ \n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+ \n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+ \n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+ \n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+ \n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver; \n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9262683","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9262682","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9262681","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9262680","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9262679","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9262678","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9262677","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9262676","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9262675","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use \n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ \n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9262674","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9262673","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"97","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"97","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Entities, Action } from '..\/store';\n+import { Thread, ThreadUnreadCount } from '.\/thread.model';\n+\n+export const threadReducer =\n+ (state: any = {}, action: Action): any => {\n+\n+ console.log(action);\n+\n+ if (action.payload && action.payload.ref.collection === 'threads') {\n+ switch (action.type) {\n+ case 'API_LOAD_SUCCESS':\n+\n+\n+ const { data, ref } = action.payload;\n+ \/\/ Denoramlize the Thread API response to inline Users, Project &\n+ \/\/ Contest details\n+ const contextDetails = data.context_details;\n+ const users = data.users;\n+ const oldThreads = state.entities\n+ const threads = data.threads.reduce((acc: any, thread: any) => {\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.project = contextDetails.projects[context.id];\n+ } else {\n+ context.contest = contextDetails.contests[context.id];\n+ }\n+ const members = thread.thread.members.map((memberId: number) => users[memberId]);\n+ const owner = users[thread.thread.owner];\n+ const threadInner = { ...thread.thread, context, members };\n+\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ acc[thread.id] = { ...thread , threadInner, messages };\n+ return acc;\n+ }, {});\n+\n+\n+ const entities = threads;\n+ const collection = state[ref.key] || {};\n+ const filters = 'default';\n+ const foo = { ...state, ...{\n+ [ref.key]: {\n+ entities: {\n+ ...collection.entities,\n+ ...entities\n+ },\n+ lists: {\n+ ...collection.lists,\n+ ...{\n+ [filters]: Object.keys(entities).reduce((acc, id, index) => {\n+ acc[(ref.query.offset || 0) + index] = id;\n+ return acc;\n+ }, collection.lists ? (collection.lists[filters] || []) : [])\n+ }\n+ }\n+ }\n+ }};\n+\n+ console.log('foo', foo);\n+ return foo;\n+\n+\n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+ \n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n+export const threadUnreadCountReducer =\n+ (state: Entities<ThreadUnreadCount> = {}, action: Action): Entities<ThreadUnreadCount> => {\n+ if (action.payload && action.payload.ref.collection === 'threads') {\n+ switch (action.type) {\n+ case 'API_LOAD_SUCCESS':\n+ const { data, ref } = action.payload;\n+ \/\/ return mergeEntities(state, data.unread_thread_count, ref);\n+ return state;\n+\n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n"}]},{"id":"9262672","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface ThreadUnreadCount {\n+ unread_thread_count: number;\n+}\n+ \n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ type: 'project' | 'contest';\n+ contest?: ThreadContest;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD \n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9262671","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const threadEffects = {\n+ list(query: any) {\n+ return {\n+ endpoint: 'messages\/0.1\/threads',\n+ defaultParams: {\n+ unread_count: true,\n+ last_message: true,\n+ message_details: true,\n+ context_details: true,\n+ user_details: true,\n+ }\n+ };\n+ }\n+ \/*push: (threadId, {message}) => ({\n+ url: '\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ body: {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ \/\/ from_user: this.selfId,??\n+ },\n+ }),*\/\n+};\n+\n"}]},{"id":"9262670","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"101","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"101","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+\n+import { Thread, ThreadUnreadCount } from '.\/thread\/thread.model';\n+import { threadReducer, threadUnreadCountReducer } from '.\/thread\/thread.reducer';\n+import { threadEffects } from '.\/thread\/thread.effects';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+import { messageEffects } from '.\/message\/message.effects';\n+\n+import { Observable } from 'rxjs\/Observable';\n+\n+\n+\n+export interface ListOptions {\n+ query: Query;\n+}\n+\n+export interface Query {\n+ limit?: number|Observable<number>;\n+ offset?: number|Observable<number>;\n+}\n+\n+\n+export interface Reference {\n+ collection: Collection;\n+ key: number;\n+ query: {\n+ limit?: number;\n+ offset?: number;\n+ }\n+}\n+\n+\n+\n+\/\/ Model\n+export interface Entities<T> {\n+ entities?: {\n+ [id: string]: T;\n+ };\n+ lists?: {\n+ [filters: string]: T[];\n+ };\n+};\n+\n+export type Collection = keyof Collections;\n+\n+export interface Collections {\n+ threads: {\n+ [userId: string]: Entities<Thread>;\n+ },\n+ threadsUnreadCount: {\n+ [userId: string]: Entities<ThreadUnreadCount>\n+ },\n+ messages: {\n+ [threadId: string]: Entities<Message>;\n+ }\n+};\n+\n+\/*export const mergeCollection = (collection, newCollection, ref) => {\n+ \n+\n+ return {\n+\n+ const queryString = JSON.stringify(query);\n+ const key = ref.key.toString();\n+ const offset = offset\n+ return {\n+ [key]: {\n+ [queryString]: data\n+ }\n+ }\n+};*\/\n+\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ threadsUnreadCount: threadUnreadCountReducer,\n+ messages: messageReducer,\n+});\n+\n+\/\/ Effects\n+export interface Effect<T> {\n+ [collection: string]: any; \/\/ FIXME type that\n+}\n+\n+export const effects = {\n+ threads: threadEffects,\n+ messages: messageEffects,\n+};\n+\n+\n+\/\/ Actions\n+export interface Action {\n+ type: string;\n+ payload?: {\n+ data: any;\n+ ref: Reference;\n+ }\n+}\n"}]},{"id":"9262669","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"62","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"62","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const messageReducer = (\n+ state: any = {}, action: any\n+): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_MESSAGES': {\n+ const newThreads: any = {};\n+ action.payload.forEach((message: any) => {\n+ const messageList: Array<any> = (\n+ newThreads[message.thread_id] || state[message.thread_id] || []\n+ ).filter((m: any) => m.id !== message.id);\n+ messageList.push(message);\n+ newThreads[message.thread_id] = messageList;\n+ });\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9262668","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9262667","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const messageEffects = {\n+ list: (query: any) => ({\n+ api: 'messages\/0.1\/messages',\n+ search: {\n+ 'threads[]': query.threadId,\n+ }\n+ })\n+};\n"}]},{"id":"9262666","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+export const RECEIVED_FROM_SOCKET = '[Message] Received from socket';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class ReceivedFromSocket implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: { thread_id: string }) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9262665","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9262664","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"40","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Collection, RootModel, Query } from '.\/store';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private collection: Collection,\n+ private query: Query,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.collection, this.query, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ \/*action(actionType: ActionType, params): Promise<void> {\n+ this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ });\n+ \/\/ Run any side effects\n+ return Observable.of(effects[this.ref][actionType](this.key.id, params))\n+ .switchMap(({url, body}) => this.apiHttp.post(url, body))\n+ .do(this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ }))\n+ .mapTo(void 0)\n+ .toPromise();\n+ }*\/\n+\n+}\n+\n"}]},{"id":"9262663","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9262662","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"98","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Collection, Collections, ListOptions, effects } from '.\/store'\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<Collections>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {\n+ this.store.select('threads').subscribe(foo => console.log(foo));\n+ }\n+\n+ \/\/ FIXME: type that function!\n+ \/*list<a extends keyof T, b extends keyof T[a]>(collection: a,\n+ key: b|Observable<b>,\n+ options?: ListOptions): RootModel<T[a][b]> {*\/\n+\n+ list(collection: Collection,\n+ key: number|Observable<number>,\n+ options?: ListOptions) {\n+\n+ const query = options ? options.query : {};\n+ const keyObservable = key instanceof Observable ? key : Observable.of(key);\n+ const queryObservable = Observable.combineLatest([\n+ query.limit instanceof Observable ? query.limit : Observable.of(query.limit),\n+ query.offset instanceof Observable ? query.offset : Observable.of(query.offset)\n+ ], (limit: number, offset: number) => ({ limit, offset }));\n+\n+ return new ListObservable(collection, query, this.store,\n+ Observable.combineLatest([keyObservable, queryObservable])\n+ .switchMap(([key, query]) =>\n+ this.store.pluck(collection, key.toString())\n+ .distinctUntilChanged()\n+ .combineLatest([\n+ Observable.of((<any>effects)[collection].list(key, query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => this.store.dispatch({\n+ type: 'API_LOAD_SUCCESS',\n+ payload: {\n+ data,\n+ ref: { collection, key, query }\n+ }\n+ }))\n+ .mapTo({}),\n+ ], (state) => state)\n+ .filter(entities => entities !== undefined)\n+ .map(collection => (<any>collection).lists['default']\n+ .slice(query.offset || 0)\n+ .map((id: any) => (<any>collection).entities[<string>id])\n+ )\n+ )\n+ );\n+ \n+ \/\/return Observable.combineLatest([\n+ \/\/ this.store.select(collection),\n+ \/*Observable.of(effects[collection].live(query))\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocket.connect())\n+ .do(data => this.store.dispatch({\n+ type: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { collection, query, data }\n+ })),*\/\n+ \/\/], (state) => state)\n+ \/\/.switchMap(source => new ListObservable(collection, query, this.store, source));*\/\n+ }\n+\n+ \/*object(ref: Document|Path) {\n+ const path = Array.isArray(ref) ? ref : [ref];\n+\n+ return Observable.combineLatest([\n+ this.store.pluck(...path)\n+ .distinctUntilChanged(),\n+ Observable.of(effects[path[0]].get())\n+ .filter(x => x)\n+ .switchMap(({url, search}) => this.apiHttp.get(url, {search}))\n+ .do((data) => this.store.dispatch({\n+ action: 'API_LOAD_SUCCESS',\n+ payload: { path, data },\n+ })),\n+ Observable.of(effects[path[0]].live())\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocket())\n+ .do(data => this.store.dispatch({\n+ action: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { path, query, data },\n+ })),\n+ ], (state) => state\n+ ).map(source => new ActionableObservable(path, this.store, source));\n+ }*\/\n+\n+}\n"}]},{"id":"9262661","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9262660","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9262659","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"70","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"70","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.defaultParams)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result)\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid , token}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${uid};${token}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ let params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9262658","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9262657","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n+\n"}]},{"id":"9262656","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9262655","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9262654","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ uid: number;\n+ token: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const uid = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10) || 13828506;\n+ const token = this.cookies.get(this.authConfig.authHashCookie) || 'lh%2FSLFzWC5qQN9ncUQukekjSveF%2FCl8P3vbc8OKNuKk%3D';\n+ this.next({ uid, token });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9262653","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n+\n"}]},{"id":"9262652","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9262651","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-3rwcogsde4zquayc7g7z"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262650","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9262649","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.0\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9262648","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9262647","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9262646","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9262645","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9262644","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+This project was generated with [Angular CLI](https:\/\/github.com\/angular\/angular-cli) version 1.0.0-rc.0.\n+\n+## Development server\n+Run `ng serve` for a dev server. Navigate to `http:\/\/localhost:4200\/`. The app will automatically reload if you change any of the source files.\n+\n+## Code scaffolding\n+\n+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive\/pipe\/service\/class\/module`.\n+\n+## Build\n+\n+Run `ng build` to build the project. The build artifacts will be stored in the `dist\/` directory. Use the `-prod` flag for a production build.\n+\n+## Running unit tests\n+\n+Run `ng test` to execute the unit tests via [Karma](https:\/\/karma-runner.github.io).\n+\n+## Running end-to-end tests\n+\n+Run `ng e2e` to execute the end-to-end tests via [Protractor](http:\/\/www.protractortest.org\/).\n+Before running the tests make sure you are serving the app via `ng serve`.\n+\n+## Further help\n+\n+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https:\/\/github.com\/angular\/angular-cli\/blob\/master\/README.md).\n"}]},{"id":"9262643","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9262642","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9262641","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9262640","metadata":{"line:first":722},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"945","newLength":"946","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?mobile=true permanent;\n rewrite ^\/semm\/$ https:\/\/$host\/find\/?mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/activate.php \/local\/activate.php last;\n rewrite ^\/local\/onSignup.php \/local\/onSignup.php last;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n"}]},{"id":"9262639","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9262638","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9262637","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9262636","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262635","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-list.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9262634","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9262633","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-item.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9262632","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Input } from '@angular\/core';\n import { Thread } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-item',\n template: `\n <div>{{ thread | json }}<div>\n `,\n styleUrls: ['.\/thread-item.component.less'],\n })\n export class ThreadItemComponent {\n @Input() thread: Thread;\n }\n"}]},{"id":"9262631","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":["public\/static\/modules\/messaging\/messaging.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9262630","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n import { ThreadListComponent } from '.\/thread-list.component';\n import { ThreadItemComponent } from '.\/thread-item.component';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n ],\n declarations: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n exports: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class MessagingModule {}\n"}]},{"id":"9262629","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":["public\/static\/modules\/messaging\/index.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9262628","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/messaging\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/messaging.module';\n"}]},{"id":"9262627","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9262626","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9262625","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9262624","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9262623","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9262622","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9262621","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9262620","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9262619","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9262618","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9262617","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9262616","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9262615","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9262614","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9262613","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9262612","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9262611","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9262610","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9262609","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9262608","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9262607","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9262606","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9262605","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9262604","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9262603","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"371","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9262602","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"10","delLines":"27","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1236","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"^2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9262601","metadata":{"line:first":1},"oldPath":null,"currentPath":".nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6.10\n"}]},{"id":"9262600","metadata":{"line:first":1},"oldPath":null,"currentPath":".angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"gaf-app\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"nope","local:commits":{"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c":{"commit":"4c8933f0ff8a68fa8a8b8c2516bb70495cc74d9c","tree":"e86302ebe2ecb73a3e4893f93119efd6f1ea458c","parents":["c3815d83d0278276714c527df4b976ff2c29aa19"],"time":"1488818884","author":"Laurent Goudet","summary":"Dynamic queries handling","message":"Dynamic queries handling","authorEmail":"laurent@freelancer.com"},"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"698771":{"id":"698771","revisionID":"56417","dateCreated":"1488560604","dateModified":"1488560607","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - meh","unitStatus":"1","lintStatus":"4","changes":[{"id":"9259359","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5281","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5281","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n+\n"}]},{"id":"9259358","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259357","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9259356","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9259355","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9259354","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/@shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9259353","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9259352","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9259351","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9259350","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259349","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9259348","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9259347","metadata":{"old:file:size":2238,"old:file:mime-type":"image\/x-icon","old:binary-phid":"PHID-FILE-cx2vvbia4ya6ydpvu23a"},"oldPath":null,"currentPath":"public\/favicon.ico","awayPaths":["webapp\/src\/favicon.ico"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259346","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-oo4dhl4h2gd2rhhngjjk"},"oldPath":"public\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259345","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const environment = {\n+ production: false,\n+ authConfig: {\n+ baseUrl: 'https:\/\/laurent-fli.syd1.fln-dev.net\/auth',\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: 'https:\/\/laurent-fli.syd1.fln-dev.net\/api',\n+ ajaxBaseUrl: 'https:\/\/laurent-fli.syd1.fln-dev.net\/ajax',\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n+\n"}]},{"id":"9259344","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259343","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9259342","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259341","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n"}]},{"id":"9259340","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.href = state.url;\n+ return false;\n+ }\n+}\n"}]},{"id":"9259339","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9259338","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9259337","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9259336","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9259335","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+ <img src=\"{{thread.avatarUrl}}\" class=\"avatar\">\n+ <div class=\"body\">\n+ <div class=\"body-content-username\">\n+ {{thread.username}}\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{thread.lastMessage}}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9259334","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9259333","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9259332","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9259331","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9259330","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9259329","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9259328","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9259327","metadata":{"line:first":1,"copy:lines":{"43":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"44":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"45":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"46":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"47","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"47","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n+\n"}]},{"id":"9259326","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"80","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"80","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router'; \n+import { Datastore, ListObservable, Thread, Message } from '@shared\/datastore';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ {{ (threads | async) | json }}\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <!--\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ threadsLimit = new Subject<number>();\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.threads = this.datastore.list('threads', {\n+ query: {\n+ orderBy: 'time_updated',\n+ \/\/ limit: this.threadsLimit.startWith(10),\n+ }\n+ });\n+ \/*this.messages = this.datastore.list('messages', {\n+ query: {\n+ threads: this.route.data.map(threadId => [threadId]),\n+ offset: 0,\n+ limit: 50\n+ }\n+ });*\/\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.next(count);\n+ }\n+\n+ sendMessage(message: string) {\n+ \/\/ this.messages.action({ message });\n+ }\n+\n+ \/*createThread() {\n+ this.threads.push();\n+ }*\/\n+\n+}\n"}]},{"id":"9259325","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9259324","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":["webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259323","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"11","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"29","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { RouterModule, Routes } from '@angular\/router';\n import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n+import { AuthGuard } from '..\/auth-guard.service';\n \n const messagingInboxRoutes: Routes = [\n {\n path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n+ canActivate: [AuthGuard],\n+ children: [\n+ {\n+ path: '',\n+ component: MessagingInboxComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: MessagingInboxComponent\n+ }\n+ ]\n+ }\n ];\n \n @NgModule({\n imports: [\n RouterModule.forChild(messagingInboxRoutes),\n ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n exports: [\n RouterModule,\n ],\n })\n export class MessagingInboxRoutingModule { }\n"}]},{"id":"9259322","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9259321","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9259320","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9259319","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9259318","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message: EventEmitter<string>;\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9259317","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9259316","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9259315","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9259314","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9259313","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9259312","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9259311","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9259310","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ if (!auth.userId) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9259309","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9259308","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9259307","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9259306","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"36","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"36","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages-new',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages-new',\n+ loadChildren: 'app\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n+\n"}]},{"id":"9259305","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9259304","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259303","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9259302","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9259301","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9259300","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9259299","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+ \n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+ \n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+ \n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+ \n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+ \n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+ \n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver; \n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9259298","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9259297","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9259296","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9259295","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9259294","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/@shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9259293","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9259292","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/@shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9259291","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/@shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9259290","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use \n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ \n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9259289","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9259288","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"58","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"58","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { QueryList, Action, mapToQueryList } from '..\/store';\n+import { Threads } from '.\/thread.model';\n+\n+export const threadReducer =\n+ (state: QueryList<Threads> = {}, action: Action): QueryList<Threads> => {\n+\n+ console.log(action);\n+ if (action.payload && action.payload.collection === 'threads') {\n+ switch (action.type) {\n+ case 'API_LOAD_SUCCESS':\n+ const contextDetails = action.payload.data.context_details;\n+ const users = action.payload.data.users;\n+ const threads = action.payload.data.threads.map((thread: any) => {\n+ \/\/ Fix context details\n+ const context = { ...thread.thread.context };\n+ if (context.type === 'project') {\n+ context.details = contextDetails.projects[context.id];\n+ } else {\n+ context.details = contextDetails.contests[context.id];\n+ }\n+ \/\/ Fix members\n+ const members = thread.thread.members\n+ .map((memberId: any) => users[memberId]);\n+ \/\/ Fix owner\n+ const owner = users[thread.thread.owner];\n+ \/\/ Merge\n+ const threadInner = { ...thread.thread, context, members };\n+\n+ \/\/ Fix messages from_user\n+ const messages = thread.messages.map((message: any) => {\n+ return { ...message, from_user: users[message.from_user] };\n+ });\n+ return { ...thread , threadInner, messages };\n+ });\n+ return mapToQueryList(action.payload.query, {\n+ threads,\n+ unread_thread_count: action.payload.data.users.unread_thread_count\n+ });\n+ \n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+ \n+ default:\n+ return state;\n+ }\n+ }\n+ return state;\n+};\n+\n"}]},{"id":"9259287","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"221","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"221","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Threads {\n+ unread_thread_count: null;\n+ threads: Thread[];\n+}\n+\n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ \/\/ contest?: ThreadContest;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD \n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9259286","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/thread\/thread.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const threadEffects = {\n+ list(query: any) {\n+ return {\n+ endpoint: 'messages\/0.1\/threads',\n+ defaultParams: {\n+ unread_count: true,\n+ last_message: true,\n+ message_details: true,\n+ context_details: true,\n+ user_details: true,\n+ }\n+ };\n+ }\n+ \/*push: (threadId, {message}) => ({\n+ url: '\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ body: {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ \/\/ from_user: this.selfId,??\n+ },\n+ }),*\/\n+};\n+\n"}]},{"id":"9259285","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+\n+import { Threads } from '.\/thread\/thread.model';\n+import { threadReducer } from '.\/thread\/thread.reducer';\n+import { threadEffects } from '.\/thread\/thread.effects';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+import { messageEffects } from '.\/message\/message.effects';\n+\n+\n+\/\/ Model\n+export type Collection = 'messages'\n+ | 'threads';\n+\n+export interface ListOptions {\n+ query: Query;\n+}\n+\n+export interface Query {\n+ [key: string]: any;\n+ limit?: number;\n+ offset?: number;\n+}\n+\n+export interface QueryList<T> {\n+ [query: string]: T;\n+}\n+\n+export const mapToQueryList = (query: Object, entities: any) => {\n+ const queryString = JSON.stringify(query);\n+ return {\n+ [queryString]: entities\n+ }\n+};\n+\n+export interface RootModel {\n+ threads: QueryList<Threads>;\n+ messages: QueryList<Message>;\n+};\n+\n+\/\/ Effects\n+export interface Effect<T> {\n+ [collection: string]: any; \/\/ FIXME type that\n+}\n+\n+export const effects = {\n+ threads: threadEffects,\n+ messages: messageEffects,\n+};\n+\n+\/\/ Reducers\n+export const store = compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ messages: messageReducer,\n+});\n+\n+\/\/ Actions\n+export interface Action {\n+ type: string;\n+ payload?: {\n+ collection: Collection;\n+ query: string;\n+ data: any;\n+ }\n+}\n"}]},{"id":"9259284","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"62","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"62","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const messageReducer = (\n+ state: any = {}, action: any\n+): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_MESSAGES': {\n+ const newThreads: any = {};\n+ action.payload.forEach((message: any) => {\n+ const messageList: Array<any> = (\n+ newThreads[message.thread_id] || state[message.thread_id] || []\n+ ).filter((m: any) => m.id !== message.id);\n+ messageList.push(message);\n+ newThreads[message.thread_id] = messageList;\n+ });\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9259283","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9259282","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const messageEffects = {\n+ list: (query: any) => ({\n+ api: 'messages\/0.1\/messages',\n+ search: {\n+ 'threads[]': query.threadId,\n+ }\n+ })\n+};\n"}]},{"id":"9259281","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+export const RECEIVED_FROM_SOCKET = '[Message] Received from socket';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class ReceivedFromSocket implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: { thread_id: string }) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9259280","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9259279","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"40","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Collection, RootModel, Query } from '.\/store';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private collection: Collection,\n+ private query: Query,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.collection, this.query, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ \/*action(actionType: ActionType, params): Promise<void> {\n+ this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ });\n+ \/\/ Run any side effects\n+ return Observable.of(effects[this.ref][actionType](this.key.id, params))\n+ .switchMap(({url, body}) => this.apiHttp.post(url, body))\n+ .do(this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ }))\n+ .mapTo(void 0)\n+ .toPromise();\n+ }*\/\n+\n+}\n+\n"}]},{"id":"9259278","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9259277","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"78","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"78","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Collection, RootModel, ListOptions, effects } from '.\/store'\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<RootModel>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {\n+ this.store.select('threads').subscribe(foo => console.log(foo));\n+ }\n+\n+ list(collection: Collection, options?: ListOptions) {\n+ \/\/ TODO: QueryObservable\n+ const query = options ? options.query : {};\n+\n+ return new ListObservable(collection, query, this.store,\n+ this.store.select(collection)\n+ .combineLatest([\n+ Observable.of(effects[collection].list(query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => this.store.dispatch({\n+ type: 'API_LOAD_SUCCESS',\n+ payload: { collection, query, data }\n+ }))\n+ .mapTo({}),\n+ ], (state) => state)\n+ .map(entities => Object.keys(entities).map((key) => ({\n+ ...(<any>entities)[<any>key], \/\/ FIXME: typings !!\n+ $key: key\n+ })))\n+ );\n+ \n+ \/\/return Observable.combineLatest([\n+ \/\/ this.store.select(collection),\n+ \/*Observable.of(effects[collection].live(query))\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocket.connect())\n+ .do(data => this.store.dispatch({\n+ type: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { collection, query, data }\n+ })),*\/\n+ \/\/], (state) => state)\n+ \/\/.switchMap(source => new ListObservable(collection, query, this.store, source));*\/\n+ }\n+\n+ \/*object(ref: Document|Path) {\n+ const path = Array.isArray(ref) ? ref : [ref];\n+\n+ return Observable.combineLatest([\n+ this.store.pluck(...path)\n+ .distinctUntilChanged(),\n+ Observable.of(effects[path[0]].get())\n+ .filter(x => x)\n+ .switchMap(({url, search}) => this.apiHttp.get(url, {search}))\n+ .do((data) => this.store.dispatch({\n+ action: 'API_LOAD_SUCCESS',\n+ payload: { path, data },\n+ })),\n+ Observable.of(effects[path[0]].live())\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocket())\n+ .do(data => this.store.dispatch({\n+ action: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { path, query, data },\n+ })),\n+ ], (state) => state\n+ ).map(source => new ActionableObservable(path, this.store, source));\n+ }*\/\n+\n+}\n"}]},{"id":"9259276","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { store } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(store),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9259275","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9259274","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"70","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"70","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export type ApiResponseStatus = \"success\" | \"error\";\n+\n+export interface ApiResponse {\n+ result: Object;\n+ status: ApiResponseStatus;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader(), (c, h) => [c, h])\n+ .switchMap(([config, authHeader]) => {\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`, {\n+ headers: authHeader,\n+ search: this.serialize(config.defaultParams)\n+ });\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result)\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({userId , authHash}) => {\n+ return new Headers({ 'freelancer-auth-v2': `${userId};${authHash}` })\n+ });\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ let params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9259273","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9259272","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n+\n"}]},{"id":"9259271","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9259270","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9259269","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ userId: number;\n+ authHash: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const userId = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10) || 13828506;\n+ const authHash = this.cookies.get(this.authConfig.authHashCookie) || 'lh%2FSLFzWC5qQN9ncUQukekjSveF%2FCl8P3vbc8OKNuKk%3D';\n+ this.next({ userId, authHash });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9259268","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n+\n"}]},{"id":"9259267","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/@shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9259266","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-ai5zkqn26vrfohhs7tai"},"oldPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/@shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259265","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9259264","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.0\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9259263","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9259262","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9259261","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9259260","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9259259","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+This project was generated with [Angular CLI](https:\/\/github.com\/angular\/angular-cli) version 1.0.0-rc.0.\n+\n+## Development server\n+Run `ng serve` for a dev server. Navigate to `http:\/\/localhost:4200\/`. The app will automatically reload if you change any of the source files.\n+\n+## Code scaffolding\n+\n+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive\/pipe\/service\/class\/module`.\n+\n+## Build\n+\n+Run `ng build` to build the project. The build artifacts will be stored in the `dist\/` directory. Use the `-prod` flag for a production build.\n+\n+## Running unit tests\n+\n+Run `ng test` to execute the unit tests via [Karma](https:\/\/karma-runner.github.io).\n+\n+## Running end-to-end tests\n+\n+Run `ng e2e` to execute the end-to-end tests via [Protractor](http:\/\/www.protractortest.org\/).\n+Before running the tests make sure you are serving the app via `ng serve`.\n+\n+## Further help\n+\n+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https:\/\/github.com\/angular\/angular-cli\/blob\/master\/README.md).\n"}]},{"id":"9259258","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9259257","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9259256","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9259255","metadata":{"line:first":722},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"945","newLength":"946","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?mobile=true permanent;\n rewrite ^\/semm\/$ https:\/\/$host\/find\/?mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/activate.php \/local\/activate.php last;\n rewrite ^\/local\/onSignup.php \/local\/onSignup.php last;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n"}]},{"id":"9259254","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9259253","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9259252","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9259251","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259250","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-list.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259249","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9259248","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-item.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9259247","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Input } from '@angular\/core';\n import { Thread } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-item',\n template: `\n <div>{{ thread | json }}<div>\n `,\n styleUrls: ['.\/thread-item.component.less'],\n })\n export class ThreadItemComponent {\n @Input() thread: Thread;\n }\n"}]},{"id":"9259246","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":["public\/static\/modules\/messaging\/messaging.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9259245","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n import { ThreadListComponent } from '.\/thread-list.component';\n import { ThreadItemComponent } from '.\/thread-item.component';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n ],\n declarations: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n exports: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class MessagingModule {}\n"}]},{"id":"9259244","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":["public\/static\/modules\/messaging\/index.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9259243","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/messaging\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/messaging.module';\n"}]},{"id":"9259242","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9259241","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9259240","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9259239","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9259238","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9259237","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9259236","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9259235","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9259234","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9259233","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9259232","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9259231","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9259230","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9259229","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9259228","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9259227","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9259226","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9259225","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9259224","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9259223","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9259222","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9259221","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9259220","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9259219","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9259218","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"371","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9259217","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"10","delLines":"27","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1236","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"^2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9259216","metadata":{"line:first":1},"oldPath":null,"currentPath":".nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6.10\n"}]},{"id":"9259215","metadata":{"line:first":1},"oldPath":null,"currentPath":".angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"gaf-app\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"c3815d83d0278276714c527df4b976ff2c29aa19":{"commit":"c3815d83d0278276714c527df4b976ff2c29aa19","tree":"ec8b689c585a77d5c4a51d28f71669b368141913","parents":["96dadbad35ef7479b2acf138475b0d230b28ca99"],"time":"1488560564","author":"Laurent Goudet","summary":"meh","message":"meh","authorEmail":"laurent@freelancer.com"},"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"698764":{"id":"698764","revisionID":"56417","dateCreated":"1488554046","dateModified":"1488554048","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - Foo","unitStatus":"1","lintStatus":"4","changes":[{"id":"9259120","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5281","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5281","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n+\n"}]},{"id":"9259119","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259118","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9259117","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9259116","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9259115","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9259114","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9259113","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9259112","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9259111","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259110","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9259109","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9259108","metadata":{"old:file:size":2238,"old:file:mime-type":"image\/x-icon","old:binary-phid":"PHID-FILE-7b4atzrrgoofle66tbys"},"oldPath":null,"currentPath":"public\/favicon.ico","awayPaths":["webapp\/src\/favicon.ico"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259107","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-4xpt35rlp4kdzcvakbus"},"oldPath":"public\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259106","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const environment = {\n+ production: false,\n+ authConfig: {\n+ baseUrl: 'https:\/\/laurent-fli.syd1.fln-dev.net\/auth',\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: 'https:\/\/laurent-fli.syd1.fln-dev.net\/api',\n+ ajaxBaseUrl: 'https:\/\/laurent-fli.syd1.fln-dev.net\/ajax',\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n+\n"}]},{"id":"9259105","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259104","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9259103","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259102","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259101","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrollingComponent } from '.\/infinite-scrolling.component';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrollingComponent,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9259100","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9259099","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9259098","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9259097","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/ui\/infinite-scrolling.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"71","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"71","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy,\n+ ElementRef } from '@angular\/core';\n+\n+interface Bounds {\n+ readonly height: number;\n+ readonly width: number;\n+ top: number;\n+ left: number;\n+ right: number;\n+ bottom: number;\n+}\n+ \n+interface IntersectionObserverEntry {\n+ readonly time: number;\n+ readonly rootBounds: Bounds;\n+ readonly boundingClientRect: Bounds;\n+ readonly intersectionRect: Bounds;\n+ readonly intersectionRatio: number;\n+ readonly target: Element;\n+}\n+ \n+type IntersectionObserverCallback = (entries: IntersectionObserverEntry[], observer: IntersectionObserver) => void;\n+ \n+interface IntersectionObserverOptions {\n+ root?: Element | null;\n+ rootMargin?: string;\n+ threshold?: number;\n+}\n+ \n+declare class IntersectionObserver {\n+ readonly root: Element | null;\n+ readonly rootMargin: string;\n+ readonly thresholds: number[];\n+ \n+ constructor(callback: IntersectionObserverCallback, options?: IntersectionObserverOptions);\n+ \n+ observe(target: Element): void;\n+ unobserve(target: Element): void;\n+ disconnect(): void;\n+ takeRecords(): IntersectionObserverEntry[];\n+}\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver; \n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root: this.root.nativeElement,\n+ threshold: this.threshold,\n+ });\n+ this.observer.observe(this.el.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9259096","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { UiModule } from '.\/ui.module';\n"}]},{"id":"9259095","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9259094","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9259093","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9259092","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9259091","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"],"6":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",1,"-"],"7":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",2,"-"],"8":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",3,"-"],"9":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",4,"-"],"10":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",5,"-"],"11":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",6,"-"],"12":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",7,"-"],"13":["public\/static\/modules\/@shared-angular\/ui\/callout.component.html",8,"-"],"16":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",7,"-"],"17":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",8,"-"],"18":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",9,"-"],"19":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",10,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-callout',\n+ template: `\n+ <div class=\"Callout\">\n+ <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n+ <button *ngIf=\"closeButton\" class=\"Callout-close\">\n+ <span class=\"Callout-close-icon Icon Icon--small\">\n+ ×\n+ <\/span>\n+ <\/button>\n+ <\/div>\n+ `,\n+ \/\/ styleUrls: ['.\/callout.component.less'],\n+})\n+export class CalloutComponent {\n+ closeButton = true;\n+}\n"}]},{"id":"9259090","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9259089","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9259088","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use \n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ \n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9259087","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9259086","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const threadReducer =\n+ (state = {}, action: any): Object => {\n+ console.log('In thread reducer');\n+ console.log(state);\n+ switch (action.type) {\n+ case 'API_LOAD_SUCCESS':\n+ console.log(action.payload);\n+ \/*action.payload.reduce((threads, thread) => {\n+ threads[thread.id] = thread;\n+ }, {});\n+ return Object.assign({}, state, threads);*\/\n+ return state;\n+ \n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+ \n+ default:\n+ return state;\n+ }\n+};\n+\n"}]},{"id":"9259085","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"216","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"216","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ \/\/ contest?: ThreadContest;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: string; \/\/ en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: string; \/\/ employer;\n+ location: {\n+ administrative_area: null;\n+ city: string; \/\/ asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD \n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: string; \/\/ fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: string; \/\/ active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: string; \/\/ open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: string; \/\/ en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9259084","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/thread\/thread.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const threadEffects = {\n+ list(query: any) {\n+ return {\n+ endpoint: 'messages\/0.1\/threads',\n+ queryParams: {\n+ unread_count: true,\n+ last_message: true,\n+ message_details: true,\n+ context_details: true,\n+ user_details: true,\n+ }\n+ };\n+ }\n+ \/*push: (threadId, {message}) => ({\n+ url: '\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ body: {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ \/\/ from_user: this.selfId,??\n+ },\n+ }),*\/\n+};\n+\n"}]},{"id":"9259083","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+\n+import { Thread } from '.\/thread\/thread.model';\n+import { threadReducer } from '.\/thread\/thread.reducer';\n+import { threadEffects } from '.\/thread\/thread.effects';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+import { messageEffects } from '.\/message\/message.effects';\n+\n+\n+\/\/ Model\n+export type Collection = 'messages'\n+ | 'threads';\n+\n+export interface ListOptions {\n+ query: Query;\n+}\n+\n+export interface Query {\n+ [key: string]: any;\n+ limit?: number;\n+ offset?: number;\n+}\n+\n+export interface List<T> {\n+ [query: string]: T[];\n+}\n+\n+export interface RootModel {\n+ threads: List<Thread>;\n+ messages: List<Message>;\n+};\n+\n+\/\/ Effects\n+export interface Effect<T> {\n+ [collection: string]: any; \/\/ FIXME type that\n+}\n+\n+export const effects = {\n+ threads: threadEffects,\n+ messages: messageEffects,\n+};\n+\n+\/\/ Reducers\n+export function reducer(state: any, action: any) {\n+ return compose(storeFreeze, combineReducers)({\n+ threads: threadReducer,\n+ messages: messageReducer,\n+ }); \n+}\n"}]},{"id":"9259082","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"62","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"62","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const messageReducer = (\n+ state: any = {}, action: any\n+): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_MESSAGES': {\n+ const newThreads: any = {};\n+ action.payload.forEach((message: any) => {\n+ const messageList: Array<any> = (\n+ newThreads[message.thread_id] || state[message.thread_id] || []\n+ ).filter((m: any) => m.id !== message.id);\n+ messageList.push(message);\n+ newThreads[message.thread_id] = messageList;\n+ });\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9259081","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9259080","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/message\/message.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const messageEffects = {\n+ list: (query: any) => ({\n+ api: 'messages\/0.1\/messages',\n+ search: {\n+ 'threads[]': query.threadId,\n+ }\n+ })\n+};\n"}]},{"id":"9259079","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+export const RECEIVED_FROM_SOCKET = '[Message] Received from socket';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class ReceivedFromSocket implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: { thread_id: string }) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9259078","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9259077","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"40","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Collection, RootModel, Query } from '.\/store';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private collection: Collection,\n+ private query: Query,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const observable = new ListObservable<R>(this.collection, this.query, this.store, this);\n+ observable.operator = operator;\n+ return observable;\n+ }\n+\n+ \/*action(actionType: ActionType, params): Promise<void> {\n+ this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ });\n+ \/\/ Run any side effects\n+ return Observable.of(effects[this.ref][actionType](this.key.id, params))\n+ .switchMap(({url, body}) => this.apiHttp.post(url, body))\n+ .do(this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ }))\n+ .mapTo(void 0)\n+ .toPromise();\n+ }*\/\n+\n+}\n+\n"}]},{"id":"9259076","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n+export { ListObservable } from '.\/list-observable';\n"}]},{"id":"9259075","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"77","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"77","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Collection, RootModel, ListOptions, effects } from '.\/store'\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<RootModel>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {\n+ this.store.select('threads').subscribe(foo => console.log(foo));\n+ }\n+\n+ list(collection: Collection, options?: ListOptions) {\n+ \/\/ TODO: QueryObservable\n+ const query = options ? options.query : {};\n+\n+ return new ListObservable(collection, query, this.store,\n+ <any>Observable.combineLatest([\n+ this.store.select(collection),\n+ Observable.of(effects[collection].list(query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => this.store.dispatch({\n+ type: 'API_LOAD_SUCCESS',\n+ payload: { collection, query, data }\n+ })),\n+ ], (state) => state)\n+ .map(entities => Object.keys(entities).map((key) => ({\n+ ...(<any>entities)[<any>key], \/\/ FIXME: typings !!\n+ $key: key\n+ })))\n+ );\n+ \n+ \/\/return Observable.combineLatest([\n+ \/\/ this.store.select(collection),\n+ \/*Observable.of(effects[collection].live(query))\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocket.connect())\n+ .do(data => this.store.dispatch({\n+ type: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { collection, query, data }\n+ })),*\/\n+ \/\/], (state) => state)\n+ \/\/.switchMap(source => new ListObservable(collection, query, this.store, source));*\/\n+ }\n+\n+ \/*object(ref: Document|Path) {\n+ const path = Array.isArray(ref) ? ref : [ref];\n+\n+ return Observable.combineLatest([\n+ this.store.pluck(...path)\n+ .distinctUntilChanged(),\n+ Observable.of(effects[path[0]].get())\n+ .filter(x => x)\n+ .switchMap(({url, search}) => this.apiHttp.get(url, {search}))\n+ .do((data) => this.store.dispatch({\n+ action: 'API_LOAD_SUCCESS',\n+ payload: { path, data },\n+ })),\n+ Observable.of(effects[path[0]].live())\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocket())\n+ .do(data => this.store.dispatch({\n+ action: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { path, query, data },\n+ })),\n+ ], (state) => state\n+ ).map(source => new ActionableObservable(path, this.store, source));\n+ }*\/\n+\n+}\n"}]},{"id":"9259074","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { HttpModule, XHRBackend, RequestOptions } from '@angular\/http';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, Auth, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { reducer } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ HttpModule,\n+ AuthModule,\n+ StoreModule.provideStore(reducer),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9259073","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n"}]},{"id":"9259072","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"67","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"67","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Response, XHRBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export interface ApiResponse {\n+ result: any;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: XHRBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth,\n+ @Inject(DATASTORE_CONFIG) private config: DatastoreConfig,\n+ ) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ const options = {};\n+ return Observable.of(config)\n+ .withLatestFrom(this.authHeader())\n+ .switchMap(([config, authHeader]) => {\n+ console.log(authHeader);\n+ return super.get(`${this.config.apiBaseUrl}\/${config.endpoint}`);\n+ \/\/return options.header = Object.assign({}, options.headers, authHeader);\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result || [])\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({userId , authHash}) => \n+ new Headers({ 'Freelancer-Auth-V2': `${userId};${authHash}` })\n+ );\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ let params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9259071","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9259070","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n+\n"}]},{"id":"9259069","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9259068","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n"}]},{"id":"9259067","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ userId: number;\n+ authHash: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ const userId = parseInt(this.cookies.get(this.authConfig.userIdCookie), 10);\n+ const authHash = this.cookies.get(this.authConfig.authHashCookie);\n+ this.next({ userId, authHash });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9259066","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n+\n"}]},{"id":"9259065","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9259064","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-xh4rdrpbbu2ggk4kp6ng"},"oldPath":"webapp\/src\/app\/shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259063","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/startWith';\n"}]},{"id":"9259062","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/redirect-to-php-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class RedirectToPhpGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ window.location.href = state.url;\n+ return false;\n+ }\n+}\n"}]},{"id":"9259061","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9259060","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9259059","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9259058","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9259057","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+ <img src=\"{{thread.avatarUrl}}\" class=\"avatar\">\n+ <div class=\"body\">\n+ <div class=\"body-content-username\">\n+ {{thread.username}}\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{thread.lastMessage}}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9259056","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9259055","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9259054","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9259053","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9259052","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9259051","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9259050","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9259049","metadata":{"line:first":1,"copy:lines":{"43":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"44":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"45":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"46":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"47","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"47","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessagingInboxComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n+\n"}]},{"id":"9259048","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"80","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"80","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, OnInit } from '@angular\/core';\n+import { Router, ActivatedRoute } from '@angular\/router'; \n+import { Datastore, ListObservable, Thread, Message } from '@shared\/datastore';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ {{ (threads | async) | json }}\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n+ <!--\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>-->\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ threadsLimit = new Subject<number>();\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private datastore: Datastore,\n+ private router: Router,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.threads = this.datastore.list('threads', {\n+ query: {\n+ orderBy: 'time_updated',\n+ \/\/ limit: this.threadsLimit.startWith(10),\n+ }\n+ });\n+ \/*this.messages = this.datastore.list('messages', {\n+ query: {\n+ threads: this.route.data.map(threadId => [threadId]),\n+ offset: 0,\n+ limit: 50\n+ }\n+ });*\/\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.next(count);\n+ }\n+\n+ sendMessage(message: string) {\n+ \/\/ this.messages.action({ message });\n+ }\n+\n+ \/*createThread() {\n+ this.threads.push();\n+ }*\/\n+\n+}\n"}]},{"id":"9259047","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9259046","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":["webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259045","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"11","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"29","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { RouterModule, Routes } from '@angular\/router';\n import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n+import { AuthGuard } from '..\/auth-guard.service';\n \n const messagingInboxRoutes: Routes = [\n {\n path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n+ canActivate: [AuthGuard],\n+ children: [\n+ {\n+ path: '',\n+ component: MessagingInboxComponent\n+ },\n+ {\n+ path: ':threadId',\n+ component: MessagingInboxComponent\n+ }\n+ ]\n+ }\n ];\n \n @NgModule({\n imports: [\n RouterModule.forChild(messagingInboxRoutes),\n ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n exports: [\n RouterModule,\n ],\n })\n export class MessagingInboxRoutingModule { }\n"}]},{"id":"9259044","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9259043","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9259042","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return false;\/\/this.message && this.message.from_user &&\n+ \/\/this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9259041","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9259040","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message: EventEmitter<string>;\n+\n+ sendMessage(input: HTMLInputElement) {\n+ this.message.emit(input.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9259039","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9259038","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9259037","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9259036","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9259035","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9259034","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9259033","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9259032","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/auth-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CanActivate } from '@angular\/router';\n+import { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular\/router';\n+import { Auth } from '@shared\/auth';\n+\n+@Injectable()\n+export class AuthGuard implements CanActivate {\n+ constructor(\n+ private router: Router,\n+ private auth: Auth,\n+ ) {}\n+\n+ canActivate(route: ActivatedRouteSnapshot,\n+ state: RouterStateSnapshot) {\n+ return this.auth.map(auth => {\n+ console.log('auth', auth);\n+ if (!auth.userId) {\n+ this.router.navigate(['\/login'], {\n+ queryParams: {\n+ next: state.url\n+ }\n+ });\n+ return false;\n+ }\n+ return true;\n+ });\n+ }\n+}\n"}]},{"id":"9259031","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+import { DatastoreModule } from '@shared\/datastore';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { AuthGuard } from '.\/auth-guard.service';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ declarations: [\n+ AppComponent,\n+ AppPhpPageComponent\n+ ],\n+ providers: [AuthGuard],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9259030","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"4":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9259029","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9259028","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/app\/app-routing.module.ts",1,"-"],"2":["public\/static\/modules\/app\/app-routing.module.ts",2,"-"],"3":["public\/static\/modules\/app\/app-routing.module.ts",3,"-"],"22":["public\/static\/modules\/app\/app-routing.module.ts",15,"-"],"23":["public\/static\/modules\/app\/app-routing.module.ts",16,"-"],"24":["public\/static\/modules\/app\/app-routing.module.ts",17,"-"],"25":["public\/static\/modules\/app\/app-routing.module.ts",18,"-"],"26":["public\/static\/modules\/app\/app-routing.module.ts",19,"-"],"27":["public\/static\/modules\/app\/app-routing.module.ts",20,"-"],"28":["public\/static\/modules\/app\/app-routing.module.ts",21,"-"],"30":["public\/static\/modules\/app\/app-routing.module.ts",23,"-"],"31":["public\/static\/modules\/app\/app-routing.module.ts",24,"-"],"32":["public\/static\/modules\/app\/app-routing.module.ts",25,"-"],"33":["public\/static\/modules\/app\/app-routing.module.ts",26,"-"],"34":["public\/static\/modules\/app\/app-routing.module.ts",27,"-"],"35":["public\/static\/modules\/app\/app-routing.module.ts",28,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"36","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"36","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { APP_BASE_HREF } from '@angular\/common';\n+import { Routes, RouterModule } from '@angular\/router';\n+import { RedirectToPhpGuard } from '.\/redirect-to-php-guard.service';\n+import { AppPhpPageComponent } from '.\/app-php-page.component';\n+\n+const appRoutes: Routes = [\n+ {\n+ path: '',\n+ redirectTo: '\/messages-new',\n+ pathMatch: 'full',\n+ },\n+ {\n+ path: 'login',\n+ canActivate: [RedirectToPhpGuard],\n+ component: AppPhpPageComponent\n+ },\n+ {\n+ path: 'messages-new',\n+ loadChildren: '.\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n+];\n+\n+@NgModule({\n+ imports: [\n+ RouterModule.forRoot(appRoutes),\n+ ],\n+ providers: [\n+ RedirectToPhpGuard\n+ ],\n+ exports: [\n+ RouterModule,\n+ ],\n+})\n+export class AppRoutingModule {}\n+\n"}]},{"id":"9259027","metadata":{"line:first":1,"copy:lines":{"1":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",1,"-"],"2":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",2,"-"],"3":["public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app-php-page.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+\n+@Component({\n+ template: ''\n+})\n+export class AppPhpPageComponent {}\n"}]},{"id":"9259026","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9259025","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 8888\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.0\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9259024","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9259023","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9259022","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9259021","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9259020","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+This project was generated with [Angular CLI](https:\/\/github.com\/angular\/angular-cli) version 1.0.0-rc.0.\n+\n+## Development server\n+Run `ng serve` for a dev server. Navigate to `http:\/\/localhost:4200\/`. The app will automatically reload if you change any of the source files.\n+\n+## Code scaffolding\n+\n+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive\/pipe\/service\/class\/module`.\n+\n+## Build\n+\n+Run `ng build` to build the project. The build artifacts will be stored in the `dist\/` directory. Use the `-prod` flag for a production build.\n+\n+## Running unit tests\n+\n+Run `ng test` to execute the unit tests via [Karma](https:\/\/karma-runner.github.io).\n+\n+## Running end-to-end tests\n+\n+Run `ng e2e` to execute the end-to-end tests via [Protractor](http:\/\/www.protractortest.org\/).\n+Before running the tests make sure you are serving the app via `ng serve`.\n+\n+## Further help\n+\n+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https:\/\/github.com\/angular\/angular-cli\/blob\/master\/README.md).\n"}]},{"id":"9259019","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9259018","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9259017","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9259016","metadata":{"line:first":722},"oldPath":"support\/nginx\/rewrites\/gaf.conf","currentPath":"support\/nginx\/rewrites\/gaf.conf","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"945","newLength":"946","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" #### IMPORTANT ####\n ## If you change (Add \/ Update \/ Delete ) this file,\n ## you must check the external load balancer configs,\n ## as many regex (specially those creating 30[12], exist there as well,\n ## and you may never see any effect of your changes, other than in staging\/dev env.\n ##\n ## If in doubt, please see syseng@ team\n ######\n \n rewrite ^\/welcome_ \/ permanent;\n rewrite ^\/welcome\/? \/ permanent;\n \n # Careers\n rewrite ^\/info\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers\/$ https:\/\/$host\/careers permanent;\n rewrite ^\/about\/careers\\.php$ https:\/\/$host\/careers permanent;\n rewrite ^\/careers$ \/about\/careers.php last;\n \n # About Us\n rewrite ^\/about\/$ https:\/\/$host\/about permanent;\n rewrite ^\/info\/about\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about\/overview\\.php$ https:\/\/$host\/about permanent;\n rewrite ^\/about$ \/about\/overview.php last;\n \n rewrite ^\/info\/management\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\/?$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/team\\.php$ https:\/\/$host\/about\/management permanent;\n rewrite ^\/about\/management$ \/about\/team.php last;\n \n rewrite ^\/info\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press\\.php$ https:\/\/$host\/about\/press permanent;\n rewrite ^\/about\/press$ \/about\/press.php last;\n \n rewrite ^\/info\/media\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/news\\.php$ https:\/\/$host\/about\/media permanent;\n rewrite ^\/about\/media$ \/about\/news.php last;\n \n rewrite ^\/info\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards\\.php$ https:\/\/$host\/about\/awards permanent;\n rewrite ^\/about\/awards$ \/about\/awards.php last;\n \n rewrite ^\/info\/api\\.php$ https:\/\/$host\/developers permanent;\n rewrite ^\/developers\/?$ \/info\/api.php last;\n \n rewrite ^\/api\/docs$ https:\/\/$host\/api\/docs\/ permanent;\n rewrite ^\/api\/docs\/$ \/api\/documentation.php last;\n rewrite ^\/api\/docs\/([^\/]+)\/?$ \/api\/documentation.php?page=$1 last;\n \n rewrite ^\/quotes\/index\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes\\.php$ https:\/\/$host\/about\/quotes permanent;\n rewrite ^\/about\/quotes$ \/about\/quotes.php last;\n \n rewrite ^\/info\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/about\/contact-us\\.php$ https:\/\/$host\/contact permanent;\n rewrite ^\/contact$ \/about\/contact-us.php last;\n \n rewrite ^\/investors https:\/\/$host\/investor permanent;\n rewrite ^\/info\/investor-relations\\.php https:\/\/$host\/investor permanent;\n rewrite ^\/investor\/$ https:\/\/$host\/investor permanent;\n rewrite ^\/about\/investor\\.php$ https:\/\/$host\/investor permanent;\n rewrite ^\/investor$ \/about\/investor.php last;\n \n if ($args ~ p=info\/privacy) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/privacy? permanent;\n }\n rewrite ^\/about\/privacy$ \/page.php?p=info\/privacy last;\n \n if ($args ~ p=info\/terms) {\n rewrite ^\/page\\.php$ https:\/\/$host\/about\/terms? permanent;\n }\n rewrite ^\/about\/terms$ \/page.php?p=info\/terms last;\n \n rewrite ^\/bug-report\/image\/(\\d+)\/([\\w-\\.]+)\\.png$ \/reporting\/main.php?cid=$1&f=$2.png&mode=email;\n \n rewrite ^\/about\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security$ \/about\/security-reporting.php last;\n rewrite ^\/info\/security-reporting\\.php$ https:\/\/$host\/about\/security permanent;\n rewrite ^\/about\/security-hall-of-fame\\.php$ https:\/\/$host\/about\/security\/hall-of-fame permanent;\n rewrite ^\/about\/security\/hall-of-fame$ \/about\/security-hall-of-fame.php last;\n rewrite ^\/info\/vulnerability-submission\\.php$ https:\/\/$host\/about\/security permanent;\n \n # Mobile Landing page\n rewrite ^\/mobile-app\/$ https:\/\/$host\/mobile permanent;\n rewrite ^\/mobile\/?$ \/mobile-app\/index.php last;\n \n rewrite ^\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n rewrite ^\/.well-known\/apple-app-site-association$ \/mobile-app\/site-association.php last;\n \n # Project Showcase\n rewrite ^\/projects\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback\/$ https:\/\/$host\/showcase\/after-feedback permanent;\n rewrite ^\/showcase\/after-feedback$ \/showcase\/index.php?afterFeedback=true last;\n \n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/projects\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)\/$ https:\/\/$host\/showcase\/$1\/$2 permanent;\n \n rewrite ^\/projects\/showcase$ https:\/\/$host\/showcase permanent;\n rewrite ^\/projects\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/tombstone\/default\\.php$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n \n rewrite ^\/projects\/showcase\/create\/?$ https:\/\/$host\/showcase\/add permanent;\n rewrite ^\/showcase\/create https:\/\/$host\/showcase\/add permanent;\n \n # RED Project Showcase\n rewrite ^\/showcase\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase$ \/showcase\/index.php last;\n rewrite ^\/showcase\/add$ \/showcase\/start.php last;\n rewrite ^\/showcase\/my$ \/showcase\/my.php last;\n rewrite ^\/showcase\/([\\w-\\.]+)$ \/showcase\/index.php?category=$1 last;\n rewrite ^\/showcase\/s\/$ https:\/\/$host\/showcase permanent;\n rewrite ^\/showcase\/s\/(.+)$ \/showcase\/index.php?search=$1 last;\n rewrite ^\/showcase\/i\/(.+)$ \/showcase\/index.php?item=$1 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/([\\w]+)$ \/showcase\/index.php?category=$1&page=$2 last;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/$ https:\/\/$host\/showcases\/$1 permanent;\n rewrite ^\/showcase\/([\\w-\\.]+)\/s\/(.+)$ \/showcase\/index.php?category=$1&search=$2 last;\n rewrite ^\/showcase-app\/$ https:\/\/$host\/showcase-app permanent;\n rewrite ^\/showcase-app$ \/mobile-app\/showcase.php last;\n rewrite ^\/showcase-app\/link$ \/mobile-app\/redirect-link.php last;\n \n \n rewrite ^\/projects\/view-by-job\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/search\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n rewrite ^\/projects\/onsearch\\.php$ https:\/\/$host\/search\/search_new.php permanent;\n \n # category\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests\/?$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)-Contests_(\\d+)\/?$ https:\/\/$host\/contest\/$1\/$2 permanent;\n \n rewrite ^\/projects\/by-job\/([\\w\\.-]+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/by-job\/([\\w\\.-]+)_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n \n # uniform\n rewrite ^\/jobs$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/jobs\/(\\d+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)$ https:\/\/$host\/jobs\/$1\/$2\/$3\/ permanent;\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/jobs\/$1\/$2\/ permanent;\n rewrite ^\/jobs\/featured$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/jobs\/fulltime$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/jobs\/ending$ https:\/\/$host\/jobs\/ending\/ permanent;\n rewrite ^\/jobs\/lowbids$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/jobs\/localjobs$ https:\/\/$host\/jobs\/localjobs\/ permanent;\n rewrite ^\/jobs\/featured\/(\\d+)$ https:\/\/$host\/jobs\/featured\/$1\/ permanent;\n rewrite ^\/jobs\/fulltime\/(\\d+)$ https:\/\/$host\/jobs\/fulltime\/$1\/ permanent;\n rewrite ^\/jobs\/ending\/(\\d+)$ https:\/\/$host\/jobs\/ending\/$1\/ permanent;\n rewrite ^\/jobs\/lowbids\/(\\d+)$ https:\/\/$host\/jobs\/lowbids\/$1\/ permanent;\n rewrite ^\/jobs\/localjobs\/(\\d+)$ https:\/\/$host\/jobs\/localjobs\/$1\/ permanent;\n rewrite ^\/contest$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/?$ https:\/\/$host\/contest\/ permanent;\n rewrite ^\/contests\/(.+)$ https:\/\/$host\/contest\/$1 permanent;\n rewrite ^\/fixed-jobs$ https:\/\/$host\/fixed-jobs\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ https:\/\/$host\/fixed-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n \n rewrite ^\/contest\/nasa\/?$ \/contest\/nasa\/index.php last;\n rewrite ^\/contest\/nasa\/([^\/]+)\/?$ \/contest\/nasa\/index.php?tab=$1 last;\n \n # legacy redirect\n rewrite ^\/projects\/all_(\\d+)\\.html$ https:\/\/$host\/jobs\/$1\/ permanent;\n rewrite ^\/projects\/all\\.php$ https:\/\/$host\/jobs\/ permanent;\n rewrite ^\/projects\/featured\\.php$ https:\/\/$host\/jobs\/featured\/ permanent;\n rewrite ^\/projects\/featured_(\\d+)\\.html$ https:\/\/$host\/jobs\/featured\/$1 permanent;\n rewrite ^\/projects\/fulltime\\.php$ https:\/\/$host\/jobs\/fulltime\/ permanent;\n rewrite ^\/projects\/fulltime_(\\d+)\\.html$ https:\/\/$host\/jobs\/fulltime\/$1 permanent;\n rewrite ^\/projects\/trial\\.php$ https:\/\/$host\/jobs\/trial\/ permanent;\n rewrite ^\/projects\/trial_(\\d+)\\.html$ https:\/\/$host\/jobs\/trial\/$1 permanent;\n rewrite ^\/projects\/lowbids\\.php$ https:\/\/$host\/jobs\/lowbids\/ permanent;\n rewrite ^\/projects\/lowbids_(\\d+)\\.html$ https:\/\/$host\/jobs\/lowbids\/$1 permanent;\n rewrite ^\/users\/manage-payments\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/payments\/newescrow\\.php$ https:\/\/$host\/users\/financial-dash\/?action=create-milestone permanent;\n rewrite ^\/payments\/transfer\\.php$ https:\/\/$host\/users\/financial-dash\/?action=transfer-funds permanent;\n rewrite ^\/payments\/clearescrow\\.php$ https:\/\/$host\/users\/financial-dash\/ permanent;\n rewrite ^\/flippa_landing\\.php$ \/ permanent;\n rewrite ^\/hire\/flippa\/$ \/ permanent;\n rewrite ^\/report\/contact\\.php$ https:\/\/$host\/users\/helpdesk.php permanent;\n \n #new project and contest uniform\n rewrite ^\/hourly-jobs\/(\\d+)$ https:\/\/$host\/hourly-jobs\/$1\/ permanent;\n rewrite ^\/hourly-jobs$ https:\/\/$host\/hourly-jobs\/ permanent;\n rewrite ^\/fixed-jobs\/(\\d+)$ \/fixed-jobs\/$1\/ last;\n rewrite ^\/fixed-jobs$ \/fixed-jobs\/ last;\n \n #bookmarked projects & xpbonus\n rewrite ^\/jobs\/bookmark\/$ \/projects\/bookmark.php? last;\n rewrite ^\/jobs\/xpbonus\/$ \/projects\/xpbonus.php? last;\n \n #new project url rewrites\n rewrite ^\/projects\/project-(\\d+)\/$ \/projects\/view_new.php?id=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\\/$ \/projects\/view_new.php?u=$1&id=$2 last;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1 last;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ \/projects\/view_new.php?project=$1\/$2&burl=1 last;\n \n #old project url rewrites to new project urls\n rewrite ^\/projects\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9]+)_(\\d+)\\.html$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\.html$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n rewrite ^\/projects\/([a-zA-Z0-9\\.\\-]+)\/(\\d+)\\.html$ https:\/\/$host\/projects\/project-$2\/ permanent;\n \n #new project and contest rewrites\n rewrite ^\/jobs\/project-(\\d+)\/$ https:\/\/$host\/projects\/project-$1\/ permanent;\n rewrite ^\/jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1 last;\n rewrite ^\/hourly-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=h last;\n rewrite ^\/fixed-jobs\/(\\d+)\/$ \/projects\/browse.php?pg=$1&type=f last;\n \n rewrite ^\/jobs\/$ \/projects\/browse.php last;\n rewrite ^\/hourly-jobs\/$ \/projects\/browse.php?type=h last;\n rewrite ^\/fixed-jobs\/$ \/projects\/browse.php?type=f last;\n \n rewrite ^\/jobs\/featured\/(\\d+)\/$ \/projects\/browse.php?featured=true&pg=$1 last;\n rewrite ^\/jobs\/featured\/$ \/projects\/browse.php?featured=true last;\n rewrite ^\/jobs\/localjobs\/(\\d+)\/$ \/projects\/browse.php?localjobs=true&pg=$1 last;\n rewrite ^\/jobs\/localjobs\/$ \/projects\/browse.php?localjobs=true last;\n rewrite ^\/jobs\/fulltime\/(\\d+)\/$ \/projects\/browse.php?fulltime=true&pg=$1&type=f last; #fixed projects only\n rewrite ^\/jobs\/fulltime\/$ \/projects\/browse.php?fulltime=true&type=f last; #fixed projects only\n \n #additional rewrites for lowbids and ending\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/(\\d+)\/$ \/\/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/ending\/([\\w-\\.]+)\/$ \/projects\/browse.php?biddingEnds=1&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/ending\/(\\d+)\/$ \/projects\/browse.php?pg=$1&biddingEnds=1&sortDirection=asc last;\n rewrite ^\/jobs\/ending\/$ \/projects\/browse.php?sortColumn=left&biddingEnds=1&sortDirection=asc last;\n \n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/myskills_new.php?st=$1&pg=$2 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1&cl=$2 last;\n rewrite ^\/jobs\/myskills\/(\\d+)\/$ \/projects\/myskills_new.php?pg=$1 last;\n rewrite ^\/jobs\/myskills\/([\\w-\\.]+)\/$ \/projects\/myskills_new.php?st=$1 last;\n rewrite ^\/jobs\/myskills\/$ \/projects\/myskills_new.php? last;\n rewrite ^\/projects\/myskills\\.php$ https:\/\/$host\/jobs\/myskills\/ permanent;\n \n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&pg=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1&cl=$2 last;\n rewrite ^\/jobs\/lowbids\/([\\w-\\.]+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&st=$1 last;\n rewrite ^\/jobs\/lowbids\/(\\d+)\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc&pg=$1 last;\n rewrite ^\/jobs\/lowbids\/$ \/projects\/browse.php?lowbids=true&sortColumn=bids&sortDirection=asc last;\n \n #st = Skill and listing Type; cl = Country and Language\n rewrite ^\/jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?st=$1&cl=$2&pg=$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(\\d+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&pg=$2&$3 last;\n rewrite ^\/jobs\/([\\w-\\.]+)\/(?:\\?(.*))?$ \/projects\/browse.php?st=$1&$2 last;\n \n \n \n #jobs\/ for projects rewrites to new project urls\n rewrite ^\/jobs\/([a-zA-Z0-9]+)_(\\d+)\\\/$ https:\/\/$host\/projects\/$1_$2\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/ permanent;\n rewrite ^\/jobs\/([a-zA-Z0-9\\.\\-]+)\/([a-zA-Z\\-]+([\\.|\\-]\\d+)?)\\\/$ https:\/\/$host\/projects\/$1\/$2\/ permanent;\n \n #hourly project specific rewrites\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=h&st=$1&pg=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h&st=$1&cl=$2 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/(\\d+)$ \/projects\/browse.php?type=h&pg=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?p=h&st=$1 last;\n rewrite ^\/hourly-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=h last;\n #fixed projects specific rewrites\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2&pg=$3 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/(\\d+)\/$ \/projects\/browse.php?type=f&st=$1&pg=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1&cl=$2 last;\n rewrite ^\/fixed-jobs\/([\\w-\\.]+)\/$ \/projects\/browse.php?type=f&st=$1 last;\n \n rewrite ^\/rss\\.php$ \/rss\/search.php last;\n rewrite ^\/rss\\.html$ \/rss\/search.php last;\n rewrite ^\/rss\\.xml$ \/rss\/search.php last;\n \n rewrite ^\/button\\.xml$ \/button.php last;\n rewrite ^\/button-rss\\.xml$ \/button-rss.php last;\n \n rewrite ^\/rss\/affiliate_([a-zA-Z0-9]+)\\.xml$ \/rss\/search.php?u=$1 last;\n \n rewrite ^\/rss\/notify_([a-zA-Z0-9]+)\\.xml$ \/rss\/notify.php?u=$1 last;\n rewrite ^\/rss\/job_([\\w\\-]+)\\.xml$ \/rss\/jobs.php?name=$1 last;\n rewrite ^\/rss\/affiliatejob_([a-zA-Z0-9]+)_([\\w\\.\\-]+)\\.xml$ \/rss\/jobs.php?name=$2&u=$1 last;\n \n rewrite ^\/rss\/all\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/rss\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/featured\\.xml$ \/rss\/search.php?f=on last;\n rewrite ^\/rss\/fulltime\\.xml$ \/rss\/search.php?ft=on last;\n rewrite ^\/rss\/trial\\.xml$ \/rss\/search.php?t=on last;\n rewrite ^\/rss\/search\\.xml$ \/rss\/search.php last;\n rewrite ^\/rss\/([\\w\\-]+)_projects\\.xml$ \/rss\/search.php?tag=$1 last;\n \n rewrite ^\/admin\/projects\/(\\d+)\\.html$ \/admin\/projects\/properties.php?id=$1 last;\n rewrite ^\/admin\/rules\/(\\d+)\\.html$ \/admin\/rules\/profile.php?id=$1 last;\n rewrite ^\/admin\/rules\/all_(\\d+)\\.html$ \/admin\/rules\/all.php?pg=$1 last;\n rewrite ^\/admin\/rules\/feedback_(\\d+)\\.html$ \/admin\/rules\/feedback.php?id=$1 last;\n rewrite ^\/admin\/users\/(\\d+)\\.html$ \/admin\/users\/properties.php?id=$1 last;\n rewrite ^\/admin\/users\/all_(\\d+)\\.html$ \/admin\/users\/all.php?pg=$1 last;\n rewrite ^\/admin\/users\/feedback_(\\d+)\\.html$ \/admin\/users\/feedback.php?id=$1 last;\n \n if ( $http_x_forwarded_proto = 'http' ) {\n rewrite ^\/(users|buyers|sellers)\/(\\d+)\\.html$ https:\/\/$host\/$1\/$2.html permanent;\n }\n \n rewrite ^\/users\/(\\d+)\\.html$ \/users\/profile.php?id=$1 last;\n \n rewrite ^\/users\/feedback_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback_(\\d+)_([a-zA-Z]+)_(\\d+)\\.html$ \/users\/profile.php?id=$1&$2 last;\n rewrite ^\/users\/feedback\\.php\\?id=(\\d+)?$ \/users\/profile.php?id=$1&$2 last;\n \n rewrite ^\/buyers\/(\\d+)\\.html$ \/buyers\/profile.php?id=$1 last;\n \n rewrite ^\/job$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/job\/$ \/sellers\/index.php last;\n \n rewrite ^\/sellers$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/$ https:\/\/$host\/job\/ permanent;\n rewrite ^\/sellers\/(\\d+)\\.html$ \/sellers\/profile.php?id=$1 last;\n \n rewrite ^\/affiliates\/genevievepeters\/$ \/affiliates\/ref.php?u=0SJA001&l=%2Fhire%2F last;\n rewrite ^\/affiliates\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_NEW last;\n rewrite ^\/campaign\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1 last;\n \n rewrite ^\/affiliates\/email\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=email&u=0HME$1 last;\n rewrite ^\/affiliates\/widget\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=widget&u=0HMW$1 last;\n rewrite ^\/affiliates\/button\/([a-zA-Z0-9]+)\/$ \/affiliates\/ref.php?track-hireme-widget=button&u=0HMB$1 last;\n rewrite ^\/hireme\/([a-zA-Z0-9]+)(\\.htm)?$ \/affiliates\/ref.php?track-hireme-widget=textlink&username=$1&program=0HML last;\n rewrite ^\/affiliates\/hover\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?track-hireme-widget=hover&username=$1&program=0HMH last;\n rewrite ^\/hireme-badge(\/)?$ \/hireme$1 redirect;\n rewrite ^\/affiliates\/(textads|banner|directory)\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$2&program=AFP_NEW&track-AP-widget=$1 last;\n \n rewrite ^\/affiliates\/local\/([a-zA-Z0-9]+)\/?$ \/affiliates\/ref.php?u=$1&program=AFP_LOCAL last;\n \n rewrite ^\/affiliates\/samples\/(\\d+)\\.html$ \/affiliates\/samples\/$1.php last;\n \n # Project termite\n rewrite ^\/no-commission$ https:\/\/$host\/no-commission\/ permanent;\n rewrite ^\/no-commission\/$ \/hireme\/ last;\n rewrite ^\/no-commission\/additional-info$ https:\/\/$host\/no-commission\/additional-info\/ permanent;\n rewrite ^\/no-commission\/additional-info\/$ \/hireme\/onboard.php last;\n rewrite ^\/employ\/(\\w+)$ \/hireme\/employers.php?username=$1 last;\n \n rewrite ^\/messenger\/([^_]+)_log_(\\d+)\\.html$ \/messenger\/log.php?pg=$2&contact=$1 last;\n \n rewrite ^\/pmb\/mb(\\d+)\\.html$ \/pmb\/messageboard.php?id=$1 last;\n \n rewrite info\/error_(\\d+)\\.html$ \/info\/error.php?errno=$1 last;\n rewrite info\/(.+)\\.html$ \/info\/$1.php last;\n \n rewrite ^\/projects\/trial_(\\d+)\\.html$ \/projects\/trial.php?pg=$1 last;\n \n # scriptlance archived Projects\n rewrite ^\/projects\/sl\/(\\d+)\\.html$ \/projects\/sl_redirect.php?timestamp=$1 last;\n \n # vworker archived Projects & old user profile link\n rewrite ^\/projects\/vworker\/(\\d+)\\.html$ \/projects\/vw_redirect.php?vwid=$1 last;\n rewrite ^\/users\/vworker\/(\\d+)\\.html$ \/users\/vw_redirect.php?vwid=$1 last;\n \n rewrite ^\/buyers\/upgrade\\.php$ https:\/\/$host\/projects\/view_new.php?upgrade=1 permanent;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Snapback-Cap-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-cap\/ permanent;\n rewrite ^\/merchandise\/freelancer-cap\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Snapback-Cap-shipped last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-T-shirt-shipped-2\\.html$ https:\/\/$host\/merchandise\/freelancer-shirt\/ permanent;\n rewrite ^\/merchandise\/freelancer-shirt\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-T-shirt-shipped-2 last;\n \n rewrite ^\/marketplace\/product\/Freelancer-com-Hoodie-shipped\\.html$ https:\/\/$host\/merchandise\/freelancer-hoodie\/ permanent;\n rewrite ^\/merchandise\/freelancer-hoodie\/$ \/marketplace\/product.php?product_seo_url=Freelancer-com-Hoodie-shipped last;\n \n rewrite ^\/merchandise$ https:\/\/$host\/merchandise\/ permanent;\n rewrite ^\/merchandise\/$ \/marketplace\/index.php last;\n \n rewrite ^\/job\\.json$ \/users\/job_json.php last;\n rewrite ^\/robots\\.txt$ \/robots.php? break;\n \n rewrite ^\/users\/manage-seller\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/users\/manage-buyer\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/manage\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/buyers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/cancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n rewrite ^\/sellers\/oncancel\\.php$ https:\/\/$host\/dashboard\/ permanent;\n \n rewrite ^\/contest\/poll-(.*)$ \/contest\/poll\/poll.php?ref_code=$1 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-by-(?:.*?)-(\\d+)\\.html$ \/contest\/viewentries.php?project_id=$1&user_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)-byentry-(\\d+)\\.html$ \/contest\/viewentry.php?project_id=$1&entry_id=$2 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$3 last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/comments$ \/contest\/contest.php?project_id=$1&page=comments last;\n rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)(\\-\\-([\\d]+))?\\\/entries$ \/contest\/contest.php?project_id=$1&page=entries last;\n # rewrite ^\/contest\/(?:[\\w-]*?)(\\d+)\\-?([\\d]+)?\\.html$ \/contest\/contest.php?project_id=$1&page_num=$2 last;\n \n \n \n rewrite ^\/contest\/rss\\.xml$ \/contest\/rss.php last;\n rewrite ^\/ziphosting\/?$ \/ redirect;\n rewrite ^\/contest\/(index\\.php)?$ \/contest\/welcome\/index.php last;\n rewrite ^\/contest\/create_new\\.php$ https:\/\/$host\/contest\/create.php permanent;\n \n if (!-f $request_filename) {\n rewrite ^\/contest\/logo\/$ https:\/\/$host\/contest\/Logo-Design\/ permanent;\n rewrite ^\/contest\/welcome\/$ https:\/\/$host\/contest\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/(\\d+)$ \/projects\/browse.php?type=c&st=$1&pg=$2 last;\n rewrite ^\/contest\/([\\w\\.-]+)\/browse\/$ https:\/\/$host\/projects\/browse.php?type=c&st=$1 permanent;\n \n rewrite ^\/contest\/browse\/(\\d+)\/?$ \/contest\/browse\/$1\/;\n rewrite ^\/contest\/browse\/(\\d+)\/$ \/projects\/browse.php?type=c&pg=$1 last;\n rewrite ^\/contest\/browse\/$ \/projects\/browse.php?type=c last;\n \n \n rewrite ^\/contest\/([\\w\\.-]+)\/$ \/contest\/skill.php?job=$1&burl=1&tab=contest last;\n rewrite ^\/contest\/([\\w\\.-]+)$ https:\/\/$host\/contest\/$1\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)\/$ https:\/\/$host\/contest\/$1\/ permanent;\n rewrite ^\/contest\/([\\w\\.-]+)\/(\\d+)$ https:\/\/$host\/contest\/$1\/$2\/ permanent;\n \n rewrite ^\/contest\/([\\w\\.-]+)\/browse$ https:\/\/$host\/contest\/$1\/ permanent;\n }\n \n rewrite ^\/contest\/challenges\/nasa$ https:\/\/$host\/contest\/nasa\/ permanent;\n rewrite ^\/contest\/challenges\/exposeourlogo2015$ \/contest\/welcome\/expose-logo.php last;\n \n rewrite ^\/search\/([\\w-]+)$ https:\/\/$host\/search\/$1\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/$ \/search\/index.php?type=$1 last;\n \n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/search\/$1\/$2\/ permanent;\n rewrite ^\/search\/([\\w-]+)\/([\\w-]+)\/.*$ \/search\/index.php?type=$1&skills=$2 last;\n \n rewrite ^\/search\/.*$ \/search\/index.php?$1 last;\n \n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.p(\\d+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n rewrite ^\/projects\/by-tag\/([^\\.]+)\\.html$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/projects\/arc-tag\/([^\\.]+)\\.html$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n rewrite ^\/work\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/work\/$1\/$2\/ permanent;\n rewrite ^\/work\/([\\w-]+)$ https:\/\/$host\/work\/$1\/ permanent;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3&pg=$4 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&st=$2&pg=$3 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2&cl=$3 last;\n rewrite ^\/work\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?tag=$1&pg=$2 last;\n rewrite ^\/work\/([\\w-]+)\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1&st=$2 last;\n rewrite ^\/work\/([\\w-]+)\/$ \/search\/search_new.php?tag=$1 last;\n \n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)\/$ \/search\/search_new.php?arc=1&tag=$1&pg=$2 last;\n rewrite ^\/job-search\/([\\w-]+)\/(\\d+)$ https:\/\/$host\/job-search\/$1\/$2\/ permanent;\n rewrite ^\/job-search\/([\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$1 last;\n rewrite ^\/job-search\/([\\w-]+)$ https:\/\/$host\/job-search\/$1\/ permanent;\n \n # \/online-jobs vs \/job-search\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)$ https:\/\/$host\/online-jobs\/$tag\/$pg\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/(?<pg>\\d+)\/$ \/search\/search_new.php?arc=1&tag=$tag&pg=$pg last;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)$ https:\/\/$host\/online-jobs\/$tag\/ permanent;\n rewrite ^\/online-jobs\/(?<tag>[\\w-]+)\/$ \/search\/search_new.php?arc=1&tag=$tag last;\n \n # gamification\n rewrite ^\/users\/game\/badges\\.php$ \/users\/game\/game_page.php?current_tab=badge last;\n rewrite ^\/users\/game\/credits\\.php$ \/users\/game\/game_page.php?current_tab=credit last;\n rewrite ^\/users\/game\/overview\\.php$ \/users\/game\/game_page.php?current_tab=overview last;\n \n # cdn for profile picture\n rewrite ^\/ppic\/(\\d+)\/(.+)$ \/fs\/download.php?version=$1&resource=$2 last;\n rewrite ^\/ppic\/(.+)$ \/fs\/download.php?resource=$1 last;\n \n # cdn for tombstone image\n rewrite ^\/tmp\/(.+)$ \/fs\/download.php?resource=tmp\/$1 last;\n rewrite ^\/showcase\/image\/(.+)$ \/fs\/download.php?resource=tombstone\/$1 last;\n \n # cdn for sites screenshots\n rewrite ^\/sites\/screenshot\/(.+)$ \/fs\/download.php?resource=sites\/$1\/screenshot.png last;\n rewrite ^\/sites\/files\/(.+)\/(.+)$ \/fs\/download.php?resource=sites\/$1\/$2 last;\n \n # cdn for article image\n rewrite ^\/articles\/image\/(.+)(?:\\?(.*))?$ \/fs\/download.php?resource=article\/$1&$2 last;\n \n rewrite ^\/u\/(\\w+)\\.html$ \/users\/profile_seo.php?username=$1 last;\n \n rewrite ^\/users\/goldmembers\\.php$ https:\/\/$host\/membership\/ permanent;\n \n # translate javascript\n include rewrites\/static.conf;\n \n \n # Logged out directory\n rewrite ^\/directory$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/$ https:\/\/$host\/freelancers\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/ permanent;\n \n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/freelancers\/$1\/$3\/ permanent;\n rewrite ^\/directory\/([\\w-\\.]+)\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/freelancers\/$1\/$3\/ last;\n \n \n # rewrites old directory page to new one\n rewrite ^\/d\/(.*)$ https:\/\/$host\/freelancers\/$1 permanent;\n \n rewrite ^\/directory\/freelancer\\.php$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/skills\/$2\/ permanent;\n rewrite ^\/directory\/([\\w-]+)\/$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n \n # freelancer directory\n rewrite ^\/r\/(.*)$ https:\/\/$host\/freelancers\/r\/$1 permanent;\n \n rewrite ^\/freelancers\/r$ https:\/\/$host\/freelancers\/r\/ permanent;\n rewrite ^\/freelancers\/r\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/$ \/directory\/continent.php?region=$1 last;\n \n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/r\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/r\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/continent.php?region=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/c\/([\\w-]+)$ https:\/\/$host\/freelancers\/c\/$1\/ permanent;\n rewrite ^\/freelancers\/c\/([\\w-]+)\/$ \/directory\/category.php?category=$1 last;\n \n rewrite ^\/freelancers$ https:\/\/$host\/freelancers\/ permanent;\n rewrite ^\/freelancers\/$ \/directory\/freelancer.php last;\n \n rewrite ^\/freelancers\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2 last;\n \n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)$ https:\/\/$host\/freelancers\/$1\/$2\/$3\/ permanent;\n rewrite ^\/freelancers\/([\\w-]+)\/([\\w-]+)\/([\\w-]+)\/$ \/directory\/freelancer.php?countries=$1&skills=$2&p=$3 last;\n \n rewrite ^\/users\/(search\/?|top_users\\.php)$ https:\/\/$host\/directory\/freelancer.php permanent;\n \n # old paypal landing page to new one\n rewrite ^\/paypaloffer\/?$ \/coupon\/landing\/paypaloffer.php last;\n \n # legacy redirect\n rewrite ^\/info\/howitworks\\.php$ https:\/\/$host\/info\/how-it-works.php permanent;\n \n # Removed legacy controllers\n rewrite ^\/buyers\/changeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/index\\.php$ \/ permanent;\n rewrite ^\/buyers\/onchangeuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onuserinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/onverify\\.php$ \/ permanent;\n rewrite ^\/buyers\/userinfo\\.php$ \/ permanent;\n rewrite ^\/buyers\/verify\\.php$ \/ permanent;\n \n # Geo Targeted Top Freelancers with Country and City\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/(?<city>[\\w-\\.]+)\/top-10-\\k<job>-freelancers-\\k<city>-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers with Country only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/(?<country>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-\\k<country>$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Job only\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire\/$job permanent;\n \n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\\b\/top-10-\\k<job>-freelancers$\" https:\/\/$host\/hire\/$job permanent;\n \n # Geo Targeted Top Freelancers Overall\n rewrite \"^\\\/hire\/top-10-freelancers-(?<month>\\w+)-(?<year>\\d{4})$\" https:\/\/$host\/hire permanent;\n \n rewrite \"^\\\/hire\/top-10-freelancers$\" https:\/\/$host\/hire permanent;\n \n # Hire All Skills Directory\n rewrite \"^\\\/hire\/allskills$\" \/hire\/directory.php last;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<type>allcountries)$\" https:\/\/$host\/hire\/$job permanent;\n rewrite \"^\\\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<type>allcities)$\" https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\/<city>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/(?<city>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\/<country>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/(?<country>[\\w-\\.]+)\/?$ https:\/\/$host\/hire\/$job permanent;\n \n # Hire Page - \/hire\/<job>\n rewrite ^\/hire\/(?<job>[\\w-\\.]+)\/?$ \/hire\/index.php?job=$job&keyword=$job last;\n \n # Hire Page - \/hire\n rewrite ^\/hire\/?$ \/hire\/index.php last;\n \n #rewrites landing\n rewrite ^\/landing$ https:\/\/$host\/landing\/ permanent;\n rewrite ^\/landing\/ \/collections\/index.php?__path__=$request_uri last;\n \n # rewrites for \/find SEM pages\n rewrite ^\/find($|\/.*$) \/collections\/index.php?__path__=$request_uri last;\n \n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/ permanent;\n rewrite ^\/sem\/$ https:\/\/$host\/find\/ permanent;\n rewrite ^\/sem$ https:\/\/$host\/find\/ permanent;\n \n rewrite ^\/semm\/([\\w-\\.]+)\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/$2\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)\/$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm\/([\\w-\\.]+)$ https:\/\/$host\/find\/$1\/?mobile=true permanent;\n rewrite ^\/semm$ https:\/\/$host\/find\/?mobile=true permanent;\n rewrite ^\/semm\/$ https:\/\/$host\/find\/?mobile=true permanent;\n \n rewrite ^\/socialapp\/image\/([\\w-\\.]+)\/?$ \/landing-page\/socialapp-image.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)\/$ \/landing-page\/socialapp.php?seo_url=$1 last;\n rewrite ^\/socialapp\/([\\w-\\.]+)$ https:\/\/$host\/socialapp\/$1\/ permanent;\n \n rewrite ^\/looking-for-work\/$ \/signup permanent;\n rewrite ^\/looking-for-work$ \/signup permanent;\n \n # In-house Banner Ads\n rewrite ^\/ads\/house\/((?:[\\w-]+)\/(?:\\d+)x(?:\\d+))$ https:\/\/$host\/ads\/house\/$1.html permanent;\n rewrite ^\/ads\/house\/([\\w-]+)\/(\\d+)x(\\d+)\\.(?:htm|html)$ \/ads\/house\/index.php?content=$1&width=$2&height=$3 last;\n \n rewrite ^\/projects\/view-proj-job\\.php$ \/ permanent;\n rewrite ^\/projects\/view\\.php$ https:\/\/$host\/projects\/view_new.php permanent;\n \n # Old contest browse page\n rewrite ^\/contest\/all\\.php$ https:\/\/$host\/contest\/browse\/ permanent;\n \n # Services\n rewrite ^\/service$ \/services\/ permanent;\n rewrite ^\/service\/(.*)$ \/services\/$1 permanent;\n \n rewrite ^\/services\/(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n rewrite ^\/services\/(?:[a-zA-Z0-9\\-]+)-(\\d+)\\.html$ \/services\/view.php?id=$1&$2 last;\n \n rewrite ^\/services\/all\/$ \/services\/?all=1 last;\n rewrite ^\/services\/([\\w-\\.]+)\/([\\w-\\.]+)\/$ \/services\/?category=$1&skill=$2 last;\n rewrite ^\/services\/([\\w-\\.]+)\/$ \/services\/?category=$1 last;\n rewrite ^\/=services\/(.*)$ https:\/\/$host\/services\/$1 permanent;\n \n # Friend Invitation\n rewrite ^\/friend-invitation\/inviteFriends.php$ https:\/\/$host\/invite\/ permanent;\n rewrite ^\/friend-invitation\/join.php$ https:\/\/$host\/invite\/join.php permanent;\n rewrite ^\/invite\/([a-zA-Z0-9]+)(?:\\?(.*))?$ \/invite\/join.php?username=$1&$2;\n \n # Give and Get program\n rewrite ^\/give\/$ https:\/\/$host\/give permanent;\n rewrite ^\/give$ \/give-and-get\/give-page.php;\n rewrite ^\/get\/$ https:\/\/$host\/get permanent;\n rewrite ^\/get\/([a-zA-Z0-9]+)$ \/give-and-get\/get-page.php?from=$1;\n rewrite ^\/get$ \/give-and-get\/get-page.php;\n \n # Sites\n rewrite ^\/sites\/for-sale\/(websites|domains|make-offer) \/sites\/search.php?browse-tab=$1 last;\n rewrite ^\/sites\/for-sale\/$ \/sites\/search.php last;\n rewrite ^\/sites\/sold\/$ \/sites\/search.php?completed=1 last;\n rewrite ^\/sites\/featured\/$ \/sites\/search.php?featured=1 last;\n rewrite ^\/sites\/popular\/$ \/sites\/search.php?popular=1 last;\n rewrite ^\/sites\/new\/$ \/sites\/search.php?new=1 last;\n rewrite ^\/sites\/sell\/$ \/sites\/post.php last;\n rewrite ^\/sites\/dashboard\/$ \/sites\/dashboard.php last;\n \n rewrite ^\/sites\/affiliates\/([a-zA-Z0-9]+)$ \/affiliates\/ref.php?u=$1&program=AFP_FM last;\n \n rewrite ^\/sites\/(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n rewrite ^\/sites\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/view.php?id=$1&$2 last;\n \n rewrite ^\/sites\/edit\/(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n rewrite ^\/sites\/edit\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/edit.php?id=$1&$2 last;\n \n rewrite ^\/sites\/verify\/(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n rewrite ^\/sites\/verify\/(?:[a-zA-Z0-9\\-]+)-(\\d+)$ \/sites\/verify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doVerify\/(\\d+)(?:\\?(.*))?$ \/sites\/doVerify.php?id=$1&$2 last;\n \n rewrite ^\/sites\/doClaim\/(\\d+)(?:\\?(.*))?$ \/sites\/doClaim.php?id=$1&$2 last;\n \n rewrite ^\/sites\/handover\/(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n rewrite ^\/sites\/handover\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/handover.php?id=$1&$2 last;\n \n rewrite ^\/sites\/feedback\/(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n rewrite ^\/sites\/feedback\/(?:[a-zA-Z0-9\\-]+)-(\\d+)(?:\\?(.*))?$ \/sites\/feedback.php?id=$1&$2 last;\n \n \n # new campaigns\n rewrite ^\/campaign2\/([a-zA-Z0-9=]+)\/(\\d+)\/?$ \/affiliates\/campaign2.php?p=$1&pi=$2 last;\n rewrite ^\/campaign2\/?$ \/affiliates\/campaign2.php last;\n \n # advent calendar --> \/christmas\/index.php\n rewrite ^\/holidays\/$ \/ permanent;\n rewrite ^\/holidays$ \/ permanent;\n rewrite ^\/valentine\/?$ \/ permanent;\n \n rewrite ^\/friendsinv\/if\\.php$ https:\/\/$host\/friend-invitation\/inviteFriends.php permanent;\n rewrite ^\/friendsinv\/pi\\.php$ https:\/\/$host\/friend-invitation\/pendingInvitation.php permanent;\n rewrite ^\/friendsinv\/si\\.php$ https:\/\/$host\/friend-invitation\/sentInvitation.php permanent;\n \n rewrite ^\/buyers\/upcreate\\.php$ https:\/\/$host\/buyers\/create.php permanent;\n rewrite ^\/buyers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/buyers\/profile\\.php$ \/users\/profile.php last;\n rewrite ^\/sellers\/login\\.php$ \/users\/login.php last;\n rewrite ^\/sellers\/profile\\.php$ \/users\/profile.php last;\n \n rewrite ^\/exam\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/results\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/my_exams\/index\\.php$ \/exam\/exams\/index.php redirect;\n rewrite ^\/exam\/exams\/my\\.php$ \/exam\/exams\/index.php last;\n \n rewrite ^\/sellers\/signup\\.php$ \/users\/signup.php last;\n \n rewrite ^\/info\/user_agreement\\.php$ https:\/\/$host\/page.php?p=info\/terms permanent;\n \n rewrite ^\/faq\/(index\\.php)?$ \/faq\/search.php last;\n \n # Nubelo related pages\n rewrite ^\/nubelo\/?$ \/nubelo\/index.php last;\n rewrite ^\/prolancer\/?$ \/nubelo\/index.php?variant=prolancer last;\n rewrite ^\/faq\/nubelo$ \/nubelo\/faq.php last;\n \n # inbox\n rewrite ^\/users\/messages\/mymessages\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/$ https:\/\/$host\/messages permanent;\n rewrite ^\/users\/messages\/index\\.php$ https:\/\/$host\/messages permanent;\n rewrite ^\/messages\/?$ \/users\/messages\/index.php last;\n+rewrite ^\/messages-new\/?$ \/build\/app\/index.html last;\n \n rewrite ^\/users\/portfolio\/index\\.php$ https:\/\/$host\/me?page=portfolio permanent;\n \n \n #my-latest-project\n rewrite ^\/my-latest-project$ \/buyers\/latest-project.php last;\n \n # post-project\n rewrite ^\/buyers\/create\\.php$ https:\/\/$host\/post-project permanent;\n rewrite ^\/post-project$ \/buyers\/create.php last;\n \n # login\n rewrite ^\/users\/login\\.php$ https:\/\/$host\/login permanent;\n rewrite ^\/login$ \/users\/login.php last;\n \n # signup\n rewrite ^\/users\/signup\\.php$ https:\/\/$host\/signup permanent;\n rewrite ^\/signup$ \/users\/signup.php last;\n \n # promo_page\n rewrite ^\/promo$ \/users\/signup.php?promo=1 last;\n \n # help\n rewrite ^\/help\/$ https:\/\/$host\/support permanent;\n rewrite ^\/help$ https:\/\/$host\/support permanent;\n \n # support hq\n rewrite ^\/support\/$ \/articles\/helpcenter-landing.php?view=landing last;\n rewrite ^\/support$ https:\/\/$host\/support\/ permanent;\n \n # support hq employer\n rewrite ^\/support\/employer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer&page=$1 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=$2 last;\n rewrite ^\/support\/employer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Employer&category=$1&page=1 last;\n \n rewrite ^\/support\/employer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n rewrite ^\/support\/employer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Employer last;\n \n #support hq freelancer\n rewrite ^\/support\/freelancer\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker&page=$1 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=$2 last;\n rewrite ^\/support\/freelancer\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&view_type=Worker&category=$1&page=1 last;\n \n rewrite ^\/support\/freelancer\/$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/freelancer$ \/articles\/helpcenter-landing.php?view=landing&view_type=Worker last;\n rewrite ^\/support\/(\\d+)$ \/articles\/helpcenter-landing.php?view=landing&page=$1 last;\n \n # support hq categories\n rewrite ^\/support\/search\/?$ \/articles\/helpcenter-landing.php?view=search last;\n rewrite ^\/support\/search?$ \/articles\/helpcenter-landing.php?view=search last;\n \n rewrite ^\/support\/([\\w-]+)\/(\\d+)$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=$2 last;\n rewrite ^\/support\/([\\w-]+)\/$ \/articles\/helpcenter-landing.php?view=category&category=$1&page=1 last;\n rewrite ^\/support\/([\\w-]+)$ https:\/\/$host\/support\/$1\/ permanent;\n \n # support hq article\n rewrite ^\/support\/freelancer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Worker&category=$1&seo_url=$2 last;\n rewrite ^\/support\/employer\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&view_type=Employer&category=$1&seo_url=$2 last;\n rewrite ^\/support\/([a-zA-Z]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/helpcenter-landing.php?view=article&category=$1&seo_url=$2 last;\n \n rewrite ^\/community\/help-center$ https:\/\/$host\/support permanent;\n \n \n rewrite ^\/info\/lookingforworkers\\.php$ https:\/\/$host\/help permanent;\n rewrite ^\/info\/lookingforwork\\.php$ https:\/\/$host\/help permanent;\n \n \n # community - experts homepage\n rewrite ^\/community\/experts\/$ https:\/\/$host\/community\/experts permanent;\n rewrite ^\/community\/experts$ \/articles\/community-landing.php?type=question last;\n rewrite ^\/community\/experts\/(\\d+)$ \/articles\/community-landing.php?type=question&page=$1 last;\n \n # community - experts ask a question page\n rewrite ^\/community\/experts\/ask\/$ https:\/\/$host\/community\/experts\/ask permanent;\n rewrite ^\/community\/experts\/ask$ \/articles\/experts\/ask.php last;\n \n # community - experts category page\n rewrite ^\/community\/experts\/([\\w-]+)$ \/articles\/category.php?type=question&category_name=$1 last;\n rewrite ^\/community\/experts\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=question&category_name=$1&page=$2 last;\n \n # community - experts category and question page\n rewrite ^\/community\/experts\/q\/([\\w-]+)$ \/articles\/question\/question-view.php?seo_url=$1 last;\n \n # community homepage\n rewrite ^\/community\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community$ \/articles\/community-landing.php?type=blog last;\n rewrite ^\/community\/(\\d+)$ \/articles\/community-landing.php?type=blog&page=$1 last;\n \n # community homepage redirects\n rewrite ^\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/blog\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/articles\/$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog$ https:\/\/$host\/community permanent;\n rewrite ^\/community\/blog\/$ https:\/\/$host\/community permanent;\n \n # community - search page\n rewrite ^\/community\/search\/$ https:\/\/$host\/community\/search permanent;\n rewrite ^\/community\/search$ \/articles\/search.php last;\n rewrite ^\/community\/search\/(\\d+)$ \/articles\/search.php?page=$1 last;\n \n # community - article post and edit page\n rewrite ^\/community\/post-article$ \/articles\/create.php last;\n rewrite ^\/community\/edit-article\/(\\d+)$ \/articles\/edit.php?id=$1 last;\n \n # community - my articles page\n rewrite ^\/articles\/dashboard.php$ \/community\/my-articles permanent;\n rewrite ^\/community\/my-articles$ \/articles\/dashboard.php last;\n \n # community - article view page\n rewrite ^\/articles\/([a-zA-Z\\d\\-]+?)\\.html(?:\\?(.*))?$ https:\/\/$host\/community\/articles\/$1 permanent;\n rewrite ^\/community\/articles\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$1 last;\n rewrite ^\/community\/view-unpublished$ \/articles\/view.php last;\n \n # community - category page\n rewrite ^\/community\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1 last;\n rewrite ^\/community\/([\\w-]+)\/$ https:\/\/$host\/community\/$1 permanent;\n rewrite ^\/community\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&page=$2 last;\n \n # community - tag page\n if ($host !~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n }\n \n if ($host ~ \\.(in)$) {\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2 last;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/$ https:\/\/$host\/community\/$1\/tag\/$2 permanent;\n rewrite ^\/community\/([\\w-]+)\/tag\/([\\w-]+)\/(\\d+)$ \/articles\/category.php?type=blog&category_name=$1&tag_name=$2&page=$3 last;\n rewrite ^\/community\/([\\w-]+)\/([a-zA-Z\\d\\-]+?)$ \/articles\/view.php?seo_url=$2&category=$1 last;\n }\n \n rewrite ^\/admin\/users\/profile\\.php$ \/admin\/users\/properties.php last;\n rewrite ^\/admin\/contest\/index\\.php$ \/admin\/contest\/all.php last;\n rewrite ^\/admin\/projects\/index\\.php$ \/admin\/projects\/all.php last;\n rewrite ^\/admin\/projects\/view\\.php$ \/admin\/projects\/properties.php last;\n \n # Will remove in T32705 (To temp pass canary tests)\n rewrite ^\/admin\/support-chat\/(.*)$ \/admin\/support-queue\/index.php last;\n \n # Admin Support Queue pages\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)$ \/admin\/support-queue\/agent\/view-all.php?type=$1 last;\n rewrite ^\/admin\/support-queue\/([0-9]+)$ \/admin\/support-queue\/index.php?agentId=$1 last;\n rewrite ^\/admin\/support-queue\/recruiter\/settings$ \/admin\/support-queue\/recruiter\/assisted-management.php last;\n rewrite ^\/admin\/support-queue\/([a-zA-Z]+)\/tasks$ \/admin\/support-queue\/tasks\/management.php?type=$1 last;\n \n # Deposit page\n rewrite ^\/payments\/deposit\/choose\\.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/payments\\\/deposit.php$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits?$ https:\/\/$host\/deposit\/ permanent;\n rewrite ^\/deposits\\\/(\\w*)\\\/?\\??(\\S*)$ https:\/\/$host\/deposit\/$1\/$2 permanent;\n rewrite ^\/deposit\\\/(\\w*)\\\/?\\??(\\S*)$ \/payments\/deposit-new.php?$2&deposit_type=$1 last;\n \n \n # Phone verification page\n rewrite ^\/users\/phoneverify$ \/users\/phoneverify.php last;\n rewrite ^\/users\/verify$ \/users\/phoneverify.php last;\n \n # Translation\n rewrite ^\/translation\/signup$ https:\/\/$host\/translation\/signup.php permanent;\n \n # Recruiter landing page\n rewrite ^\/recruiter\/ https:\/\/$host\/recruiter permanent;\n rewrite ^\/recruiter$ \/recruiter\/recruiter.php last;\n \n # Local Jobs\n rewrite ^\/local$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/$ \/local\/local-ppp.php;\n rewrite ^\/local\/browse \/local\/freelancer-view.php last;\n rewrite ^\/local\/signup$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/activate.php \/local\/activate.php last;\n rewrite ^\/local\/onSignup.php \/local\/onSignup.php last;\n rewrite ^\/local\/enterLocation.php \/local\/enterLocation.php last;\n rewrite ^\/local\/enterLocation$ \/local\/enterLocation.php last;\n rewrite ^\/local\/updateLocation.php \/local\/updateLocation.php last;\n rewrite ^\/local\/add-location$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/add-rate$ https:\/\/$host\/local\/ permanent;\n rewrite ^\/local\/([\\w-]+) \/local\/local-ppp.php?type=$1;\n rewrite ^\/local\/([\\w-]+)\/([\\w'-=\\&]+)$ \/local\/local-ppp.php?type=$1&$2;\n \n # Sitemap\n rewrite ^\/sitemap$ \/sitemap\/index.php last;\n \n # Review Page\n rewrite ^\/reviews\/(?<username>[a-zA-Z0-9]+)-(?<project_seo_url>[a-zA-Z0-9\\-]+)-(?<project_id>\\d+)-(?<freelancer_id>\\d+)-(?<employer_id>\\d+)$ \/project-review\/project-review.php?username=$username&project_seo_url=$project_seo_url&project_id=$project_id&freelancer_id=$freelancer_id&employer_id=$employer_id last;\n \n # SEO Landing pages\n rewrite ^\/translators$ \/seo\/translation-landing.php last;\n rewrite ^\/mobile-app-development$ \/seo\/mobile-app-landing.php last;\n rewrite ^\/website-developers$ \/seo\/website-development-landing.php last;\n rewrite ^\/graphic-designers$ \/seo\/graphic-design-landing.php last;\n rewrite ^\/data-entry$ \/seo\/data-entry-landing.php last;\n rewrite ^\/copywriting$ \/seo\/copywriting-landing.php last;\n rewrite ^\/internet-marketing$ \/seo\/internet-marketing-landing.php last;\n rewrite ^\/category$ \/seo\/categories-landing.php last;\n rewrite ^\/outsource\/(?<cluster_seo_url>[a-zA-Z\\-]+)$ \/seo\/cluster-landing.php?cluster_seo_url=$cluster_seo_url last;\n rewrite ^\/urgent\/(?<job_seo_url>[a-zA-Z\\-]+)$ \/seo\/urgent-landing.php?job_seo_url=$job_seo_url last;\n \n # Projects Directory Page\n rewrite ^\/project-directory\/?$ \/project-directory\/A permanent;\n rewrite ^\/project-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=project_directory last;\n \n # Community Articles Directory\n rewrite ^\/article-directory\/?$ \/article-directory\/A permanent;\n rewrite ^\/article-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=community_articles last;\n \n # Users Directory Page\n rewrite ^\/user-directory\/?$ \/user-directory\/A permanent;\n rewrite ^\/user-directory(\/(?<char>[a-zA-Z]+)(?<path>(?:-\\d+)*))?$ \/seo\/directory.php?char=$char&path=$path&type=user_directory last;\n \n # Recent Projects Directory Page\n rewrite ^\/recent-project-directory\/?$ \/seo\/directory.php?char=*&type=recent_project_directory&show_filter=0&show_time_ago=1&hide_range_subtitle=1 last;\n \n # scavenger\n rewrite ^\/scavenger\/announcement\\.php$ https:\/\/$host\/scavenger permanent;\n rewrite ^\/scavenger \/scavenger\/announcement.php last;\n \n # Back to Work\n rewrite ^\/get-it-done\/? \/back-to-work\/index.php last;\n \n location = \/ajax\/timestamp.php {\n return 200 $msec;\n }\n"}]},{"id":"9259015","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9259014","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9259013","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9259012","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259011","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-list.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9259010","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9259009","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-item.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9259008","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Input } from '@angular\/core';\n import { Thread } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-item',\n template: `\n <div>{{ thread | json }}<div>\n `,\n styleUrls: ['.\/thread-item.component.less'],\n })\n export class ThreadItemComponent {\n @Input() thread: Thread;\n }\n"}]},{"id":"9259007","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":["public\/static\/modules\/messaging\/messaging.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9259006","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n import { ThreadListComponent } from '.\/thread-list.component';\n import { ThreadItemComponent } from '.\/thread-item.component';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n ],\n declarations: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n exports: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class MessagingModule {}\n"}]},{"id":"9259005","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":["public\/static\/modules\/messaging\/index.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9259004","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/messaging\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/messaging.module';\n"}]},{"id":"9259003","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9259002","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9259001","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9259000","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9258999","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9258998","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9258997","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9258996","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9258995","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9258994","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9258993","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9258992","metadata":[],"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"28","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { APP_BASE_HREF } from '@angular\/common';\n-import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-\n-const appRoutes: Routes = [\n- {\n- path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forRoot(appRoutes),\n- ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class AppRoutingModule {}\n"}]},{"id":"9258991","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9258990","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9258989","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9258988","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9258987","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9258986","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9258985","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9258984","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9258983","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9258982","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9258981","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9258980","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9258979","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"371","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9258978","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"10","delLines":"27","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1236","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"^2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9258977","metadata":{"line:first":1},"oldPath":null,"currentPath":".nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6.10\n"}]},{"id":"9258976","metadata":{"line:first":1},"oldPath":null,"currentPath":".angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"gaf-app\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"96dadbad35ef7479b2acf138475b0d230b28ca99":{"commit":"96dadbad35ef7479b2acf138475b0d230b28ca99","tree":"c185782ba7ec732103ff78157269f7b2cac4251c","parents":["0e1bd7afab43864565bf213fb4aa48c5bb0205fc"],"time":"1488554011","author":"Laurent Goudet","summary":"Foo","message":"Foo","authorEmail":"laurent@freelancer.com"},"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"698291":{"id":"698291","revisionID":"56417","dateCreated":"1488469080","dateModified":"1488469082","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-webapp","bookmark":null,"creationMethod":"arc","description":" - re-bootstrap using angular-cli","unitStatus":"1","lintStatus":"4","changes":[{"id":"9256335","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/yarn.lock","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5281","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5281","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.\n+# yarn lockfile v1\n+\"@angular\/cli@1.0.0-rc.0\":\n+ version \"1.0.0-rc.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/cli\/-\/cli-1.0.0-rc.0.tgz#dcf9e1d1f4ed886ca59de30a67fcc5ac98a2b061\"\n+ dependencies:\n+ \"@angular\/compiler\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/compiler-cli\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/core\" \">=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@angular\/tsc-wrapped\" \">=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\"\n+ \"@ngtools\/json-schema\" \"1.0.5\"\n+ \"@ngtools\/webpack\" \"1.2.11\"\n+ autoprefixer \"^6.5.3\"\n+ chalk \"^1.1.3\"\n+ common-tags \"^1.3.1\"\n+ css-loader \"^0.26.1\"\n+ cssnano \"^3.10.0\"\n+ debug \"^2.1.3\"\n+ denodeify \"^1.2.1\"\n+ diff \"^3.1.0\"\n+ ember-cli-normalize-entity-name \"^1.0.0\"\n+ ember-cli-string-utils \"^1.0.0\"\n+ exports-loader \"^0.6.3\"\n+ extract-text-webpack-plugin \"~2.0.0\"\n+ file-loader \"^0.10.0\"\n+ fs-extra \"^2.0.0\"\n+ get-caller-file \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ html-webpack-plugin \"^2.19.0\"\n+ inflection \"^1.7.0\"\n+ inquirer \"^3.0.0\"\n+ isbinaryfile \"^3.0.0\"\n+ istanbul-instrumenter-loader \"^2.0.0\"\n+ json-loader \"^0.5.4\"\n+ karma-sourcemap-loader \"^0.3.7\"\n+ karma-webpack \"^2.0.0\"\n+ less \"^2.7.2\"\n+ less-loader \"^2.2.3\"\n+ lodash \"^4.11.1\"\n+ minimatch \"^3.0.3\"\n+ node-modules-path \"^1.0.0\"\n+ node-sass \"^4.3.0\"\n+ nopt \"^4.0.1\"\n+ opn \"4.0.2\"\n+ portfinder \"~1.0.12\"\n+ postcss-loader \"^0.13.0\"\n+ postcss-url \"^5.1.2\"\n+ raw-loader \"^0.5.1\"\n+ resolve \"^1.1.7\"\n+ rimraf \"^2.5.3\"\n+ rsvp \"^3.0.17\"\n+ rxjs \"^5.0.1\"\n+ sass-loader \"^4.1.1\"\n+ script-loader \"^0.7.0\"\n+ semver \"^5.1.0\"\n+ silent-error \"^1.0.0\"\n+ source-map-loader \"^0.1.5\"\n+ style-loader \"^0.13.1\"\n+ stylus \"^0.54.5\"\n+ stylus-loader \"^2.4.0\"\n+ temp \"0.8.3\"\n+ typescript \">=2.0.0 <2.2.0\"\n+ url-loader \"^0.5.7\"\n+ walk-sync \"^0.3.1\"\n+ webpack \"~2.2.0\"\n+ webpack-dev-server \"~2.3.0\"\n+ webpack-merge \"^2.4.0\"\n+ zone.js \"^0.7.2\"\n+\n+\"@angular\/common@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/common\/-\/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08\"\n+\n+\"@angular\/compiler-cli@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-2.4.9.tgz#8ac4e28c12d2b09a10aabf9cb95c569844b90db3\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"0.5.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler-cli@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler-cli\/-\/compiler-cli-4.0.0-rc.2.tgz#49730cb232d48aba25d68541eb9166bf5330dd2b\"\n+ dependencies:\n+ \"@angular\/tsc-wrapped\" \"4.0.0-rc.2\"\n+ minimist \"^1.2.0\"\n+ reflect-metadata \"^0.1.2\"\n+\n+\"@angular\/compiler@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6\"\n+\n+\"@angular\/compiler@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/compiler\/-\/compiler-4.0.0-rc.2.tgz#643e199e6792413f42cf149a9cf1672284787c11\"\n+\n+\"@angular\/core@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6\"\n+\n+\"@angular\/core@>=2.3.1 <5.0.0 || >=4.0.0-beta <5.0.0\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/core\/-\/core-4.0.0-rc.2.tgz#59535050e5d0e6141417186eee571296f8e9c3d0\"\n+\n+\"@angular\/forms@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/forms\/-\/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c\"\n+\n+\"@angular\/http@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/http\/-\/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48\"\n+\n+\"@angular\/platform-browser-dynamic@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser-dynamic\/-\/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09\"\n+\n+\"@angular\/platform-browser@^2.4.0\":\n+ version \"2.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/platform-browser\/-\/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e\"\n+\n+\"@angular\/router@^3.4.0\":\n+ version \"3.4.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/router\/-\/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92\"\n+\n+\"@angular\/tsc-wrapped@>=0.5.0 <5.0.0 || >=4.0.0-beta <5.0.0\", \"@angular\/tsc-wrapped@4.0.0-rc.2\":\n+ version \"4.0.0-rc.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-4.0.0-rc.2.tgz#d7023d93f4576b6f776ffc7175ff760e7e133705\"\n+ dependencies:\n+ tsickle \"^0.21.0\"\n+\n+\"@angular\/tsc-wrapped@0.5.2\":\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@angular\/tsc-wrapped\/-\/tsc-wrapped-0.5.2.tgz#2eddf472c467fcb334ea94deddaaa71990c5a482\"\n+ dependencies:\n+ tsickle \"^0.2\"\n+\n+\"@ngrx\/core@^1.2.0\":\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/core\/-\/core-1.2.0.tgz#882b46abafa2e0e6d887cb71a1b2c2fa3e6d0dc6\"\n+\n+\"@ngrx\/store-devtools@^3.2.3\":\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store-devtools\/-\/store-devtools-3.2.3.tgz#3e89ac95ba7e96ebb20180a61d731954078728fb\"\n+\n+\"@ngrx\/store@^2.2.1\":\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngrx\/store\/-\/store-2.2.1.tgz#316ec1e43aa5a0166e5e6e1aa2c34a4049386510\"\n+\n+\"@ngtools\/json-schema@1.0.5\":\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/json-schema\/-\/json-schema-1.0.5.tgz#ad39037c70c88b245ac7267a71777646b6063d77\"\n+\n+\"@ngtools\/webpack@1.2.11\":\n+ version \"1.2.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@ngtools\/webpack\/-\/webpack-1.2.11.tgz#b587b1e7eb88bd68b973681669c00e7b4b7f8ea0\"\n+ dependencies:\n+ enhanced-resolve \"^3.1.0\"\n+ loader-utils \"^0.2.16\"\n+ magic-string \"^0.19.0\"\n+ source-map \"^0.5.6\"\n+\n+\"@types\/jasmine@2.5.38\":\n+ version \"2.5.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/jasmine\/-\/jasmine-2.5.38.tgz#a4379124c4921d4e21de54ec74669c9e9b356717\"\n+\n+\"@types\/node@^6.0.46\", \"@types\/node@~6.0.60\":\n+ version \"6.0.64\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/node\/-\/node-6.0.64.tgz#cdc901411f6301e1437dfed23bc68f54442e4dc8\"\n+\n+\"@types\/q@^0.0.32\":\n+ version \"0.0.32\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/q\/-\/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5\"\n+\n+\"@types\/selenium-webdriver@^2.53.35\", \"@types\/selenium-webdriver@~2.53.39\":\n+ version \"2.53.40\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/selenium-webdriver\/-\/selenium-webdriver-2.53.40.tgz#fdbb796fb77fdf8ebaf6f5d4bd0bfd9ff7215b02\"\n+\n+\"@types\/sockjs@^0.3.30\":\n+ version \"0.3.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/@types\/sockjs\/-\/sockjs-0.3.30.tgz#1c7ec2e85da8da9e8cd07c6717f5e4dc18db1e30\"\n+\n+abbrev@1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/abbrev\/-\/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f\"\n+\n+accepts@~1.3.3, accepts@1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/accepts\/-\/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca\"\n+ dependencies:\n+ mime-types \"~2.1.11\"\n+ negotiator \"0.6.1\"\n+\n+acorn-dynamic-import@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn-dynamic-import\/-\/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4\"\n+ dependencies:\n+ acorn \"^4.0.3\"\n+\n+acorn@^4.0.3, acorn@^4.0.4:\n+ version \"4.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/acorn\/-\/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0\"\n+\n+adm-zip@^0.4.7:\n+ version \"0.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1\"\n+\n+adm-zip@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/adm-zip\/-\/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736\"\n+\n+after@0.8.2:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/after\/-\/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f\"\n+\n+agent-base@2:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/agent-base\/-\/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e\"\n+ dependencies:\n+ extend \"~3.0.0\"\n+ semver \"~5.0.1\"\n+\n+ajv-keywords@^1.1.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv-keywords\/-\/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c\"\n+\n+ajv@^4.11.2, ajv@^4.7.0:\n+ version \"4.11.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ajv\/-\/ajv-4.11.3.tgz#ce30bdb90d1254f762c75af915fb3a63e7183d22\"\n+ dependencies:\n+ co \"^4.6.0\"\n+ json-stable-stringify \"^1.0.1\"\n+\n+align-text@^0.1.1, align-text@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/align-text\/-\/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+ longest \"^1.0.1\"\n+ repeat-string \"^1.5.2\"\n+\n+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/alphanum-sort\/-\/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3\"\n+\n+amdefine@>=0.0.4:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/amdefine\/-\/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5\"\n+\n+angular2-cookie@^1.2.6:\n+ version \"1.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/angular2-cookie\/-\/angular2-cookie-1.2.6.tgz#8fa845531e777adb042fe2f339c0040f6ddbf09d\"\n+\n+ansi-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-align\/-\/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+ansi-escapes@^1.1.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-escapes\/-\/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e\"\n+\n+ansi-html@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-html\/-\/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e\"\n+\n+ansi-regex@^2.0.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-regex\/-\/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df\"\n+\n+ansi-styles@^2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ansi-styles\/-\/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe\"\n+\n+any-promise@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/any-promise\/-\/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f\"\n+\n+anymatch@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/anymatch\/-\/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ micromatch \"^2.1.5\"\n+\n+app-root-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/app-root-path\/-\/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46\"\n+\n+append-transform@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/append-transform\/-\/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991\"\n+ dependencies:\n+ default-require-extensions \"^1.0.0\"\n+\n+aproba@^1.0.3:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aproba\/-\/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab\"\n+\n+are-we-there-yet@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/are-we-there-yet\/-\/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3\"\n+ dependencies:\n+ delegates \"^1.0.0\"\n+ readable-stream \"^2.0.0 || ^1.1.13\"\n+\n+argparse@^1.0.7:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/argparse\/-\/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86\"\n+ dependencies:\n+ sprintf-js \"~1.0.2\"\n+\n+arr-diff@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-diff\/-\/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf\"\n+ dependencies:\n+ arr-flatten \"^1.0.1\"\n+\n+arr-flatten@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arr-flatten\/-\/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b\"\n+\n+array-find-index@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-find-index\/-\/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1\"\n+\n+array-flatten@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-flatten\/-\/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2\"\n+\n+array-slice@^0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-slice\/-\/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5\"\n+\n+array-union@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-union\/-\/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39\"\n+ dependencies:\n+ array-uniq \"^1.0.1\"\n+\n+array-uniq@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-uniq\/-\/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6\"\n+\n+array-unique@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/array-unique\/-\/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53\"\n+\n+arraybuffer.slice@0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arraybuffer.slice\/-\/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca\"\n+\n+arrify@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/arrify\/-\/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d\"\n+\n+asap@~2.0.3:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asap\/-\/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f\"\n+\n+asn1.js@^4.0.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1.js\/-\/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+asn1@~0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asn1\/-\/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86\"\n+\n+assert-plus@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234\"\n+\n+assert-plus@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert-plus\/-\/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525\"\n+\n+assert@^1.1.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/assert\/-\/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91\"\n+ dependencies:\n+ util \"0.10.3\"\n+\n+async-each@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-each\/-\/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d\"\n+\n+async-foreach@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async-foreach\/-\/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542\"\n+\n+async@^0.9.0, async@~0.9.0:\n+ version \"0.9.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d\"\n+\n+async@^1.4.0, async@^1.4.2, async@^1.5.2:\n+ version \"1.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a\"\n+\n+async@^2.0.1, async@^2.1.2, async@^2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc\"\n+ dependencies:\n+ lodash \"^4.14.0\"\n+\n+async@~0.2.6:\n+ version \"0.2.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/async\/-\/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1\"\n+\n+asynckit@^0.4.0:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/asynckit\/-\/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79\"\n+\n+autoprefixer@^6.3.1, autoprefixer@^6.5.3:\n+ version \"6.7.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/autoprefixer\/-\/autoprefixer-6.7.6.tgz#00f05656c7ef73de9d2fd9b4668f6ef6905a855a\"\n+ dependencies:\n+ browserslist \"^1.7.5\"\n+ caniuse-db \"^1.0.30000628\"\n+ normalize-range \"^0.1.2\"\n+ num2fraction \"^1.2.2\"\n+ postcss \"^5.2.15\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+aws-sign2@~0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws-sign2\/-\/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f\"\n+\n+aws4@^1.2.1:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/aws4\/-\/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e\"\n+\n+babel-code-frame@^6.11.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0:\n+ version \"6.22.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-code-frame\/-\/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4\"\n+ dependencies:\n+ chalk \"^1.1.0\"\n+ esutils \"^2.0.2\"\n+ js-tokens \"^3.0.0\"\n+\n+babel-generator@^6.18.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-generator\/-\/babel-generator-6.23.0.tgz#6b8edab956ef3116f79d8c84c5a3c05f32a74bc5\"\n+ dependencies:\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ detect-indent \"^4.0.0\"\n+ jsesc \"^1.3.0\"\n+ lodash \"^4.2.0\"\n+ source-map \"^0.5.0\"\n+ trim-right \"^1.0.1\"\n+\n+babel-messages@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-messages\/-\/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+\n+babel-runtime@^6.18.0, babel-runtime@^6.22.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-runtime\/-\/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b\"\n+ dependencies:\n+ core-js \"^2.4.0\"\n+ regenerator-runtime \"^0.10.0\"\n+\n+babel-template@^6.16.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-template\/-\/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ babel-traverse \"^6.23.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.11.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-traverse@^6.18.0, babel-traverse@^6.23.0:\n+ version \"6.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-traverse\/-\/babel-traverse-6.23.1.tgz#d3cb59010ecd06a97d81310065f966b699e14f48\"\n+ dependencies:\n+ babel-code-frame \"^6.22.0\"\n+ babel-messages \"^6.23.0\"\n+ babel-runtime \"^6.22.0\"\n+ babel-types \"^6.23.0\"\n+ babylon \"^6.15.0\"\n+ debug \"^2.2.0\"\n+ globals \"^9.0.0\"\n+ invariant \"^2.2.0\"\n+ lodash \"^4.2.0\"\n+\n+babel-types@^6.18.0, babel-types@^6.23.0:\n+ version \"6.23.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babel-types\/-\/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf\"\n+ dependencies:\n+ babel-runtime \"^6.22.0\"\n+ esutils \"^2.0.2\"\n+ lodash \"^4.2.0\"\n+ to-fast-properties \"^1.0.1\"\n+\n+babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0:\n+ version \"6.16.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/babylon\/-\/babylon-6.16.1.tgz#30c5a22f481978a9e7f8cdfdf496b11d94b404d3\"\n+\n+backo2@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/backo2\/-\/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947\"\n+\n+balanced-match@^0.4.1, balanced-match@^0.4.2:\n+ version \"0.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/balanced-match\/-\/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838\"\n+\n+base64-arraybuffer@0.1.5:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-arraybuffer\/-\/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8\"\n+\n+base64-js@^1.0.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64-js\/-\/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1\"\n+\n+base64id@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/base64id\/-\/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6\"\n+\n+batch@0.5.3:\n+ version \"0.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/batch\/-\/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464\"\n+\n+bcrypt-pbkdf@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bcrypt-pbkdf\/-\/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d\"\n+ dependencies:\n+ tweetnacl \"^0.14.3\"\n+\n+better-assert@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/better-assert\/-\/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522\"\n+ dependencies:\n+ callsite \"1.0.0\"\n+\n+big.js@^3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/big.js\/-\/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978\"\n+\n+binary-extensions@^1.0.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/binary-extensions\/-\/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774\"\n+\n+blob@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blob\/-\/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921\"\n+\n+block-stream@*:\n+ version \"0.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/block-stream\/-\/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a\"\n+ dependencies:\n+ inherits \"~2.0.0\"\n+\n+blocking-proxy@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/blocking-proxy\/-\/blocking-proxy-0.0.5.tgz#462905e0dcfbea970f41aa37223dda9c07b1912b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+\n+bluebird@^3.3.0, bluebird@^3.4.7:\n+ version \"3.4.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bluebird\/-\/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3\"\n+\n+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:\n+ version \"4.11.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bn.js\/-\/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215\"\n+\n+body-parser@^1.12.4:\n+ version \"1.17.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/body-parser\/-\/body-parser-1.17.0.tgz#d956ae2d756ae10bb784187725ea5a249430febd\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ content-type \"~1.0.2\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ http-errors \"~1.6.1\"\n+ iconv-lite \"0.4.15\"\n+ on-finished \"~2.3.0\"\n+ qs \"6.3.1\"\n+ raw-body \"~2.2.0\"\n+ type-is \"~1.6.14\"\n+\n+boolbase@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boolbase\/-\/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e\"\n+\n+boom@2.x.x:\n+ version \"2.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boom\/-\/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+boxen@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/boxen\/-\/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6\"\n+ dependencies:\n+ ansi-align \"^1.1.0\"\n+ camelcase \"^2.1.0\"\n+ chalk \"^1.1.1\"\n+ cli-boxes \"^1.0.0\"\n+ filled-array \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ repeating \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ widest-line \"^1.0.0\"\n+\n+brace-expansion@^1.0.0:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brace-expansion\/-\/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9\"\n+ dependencies:\n+ balanced-match \"^0.4.1\"\n+ concat-map \"0.0.1\"\n+\n+braces@^0.1.2:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6\"\n+ dependencies:\n+ expand-range \"^0.1.0\"\n+\n+braces@^1.8.2:\n+ version \"1.8.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/braces\/-\/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7\"\n+ dependencies:\n+ expand-range \"^1.8.1\"\n+ preserve \"^0.2.0\"\n+ repeat-element \"^1.1.2\"\n+\n+brorand@^1.0.1:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/brorand\/-\/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f\"\n+\n+browserify-aes@^1.0.0, browserify-aes@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-aes\/-\/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a\"\n+ dependencies:\n+ buffer-xor \"^1.0.2\"\n+ cipher-base \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-cipher@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-cipher\/-\/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a\"\n+ dependencies:\n+ browserify-aes \"^1.0.4\"\n+ browserify-des \"^1.0.0\"\n+ evp_bytestokey \"^1.0.0\"\n+\n+browserify-des@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-des\/-\/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ des.js \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+\n+browserify-rsa@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-rsa\/-\/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ randombytes \"^2.0.1\"\n+\n+browserify-sign@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-sign\/-\/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f\"\n+ dependencies:\n+ bn.js \"^4.1.1\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.2\"\n+ elliptic \"^6.0.0\"\n+ inherits \"^2.0.1\"\n+ parse-asn1 \"^5.0.0\"\n+\n+browserify-zlib@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserify-zlib\/-\/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d\"\n+ dependencies:\n+ pako \"~0.2.0\"\n+\n+browserslist@^1.0.1, browserslist@^1.5.2, browserslist@^1.7.5:\n+ version \"1.7.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/browserslist\/-\/browserslist-1.7.5.tgz#eca4713897b51e444283241facf3985de49a9e2b\"\n+ dependencies:\n+ caniuse-db \"^1.0.30000624\"\n+ electron-to-chromium \"^1.2.3\"\n+\n+buffer-shims@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-shims\/-\/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51\"\n+\n+buffer-xor@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer-xor\/-\/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9\"\n+\n+buffer@^4.3.0:\n+ version \"4.9.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/buffer\/-\/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298\"\n+ dependencies:\n+ base64-js \"^1.0.2\"\n+ ieee754 \"^1.1.4\"\n+ isarray \"^1.0.0\"\n+\n+builtin-modules@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-modules\/-\/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f\"\n+\n+builtin-status-codes@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/builtin-status-codes\/-\/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8\"\n+\n+bytes@2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070\"\n+\n+bytes@2.4.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/bytes\/-\/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339\"\n+\n+callsite@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/callsite\/-\/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20\"\n+\n+camel-case@3.0.x:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camel-case\/-\/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+ upper-case \"^1.1.1\"\n+\n+camelcase-keys@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase-keys\/-\/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7\"\n+ dependencies:\n+ camelcase \"^2.0.0\"\n+ map-obj \"^1.0.0\"\n+\n+camelcase@^1.0.2:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39\"\n+\n+camelcase@^2.0.0, camelcase@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f\"\n+\n+camelcase@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/camelcase\/-\/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a\"\n+\n+caniuse-api@^1.5.2:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-api\/-\/caniuse-api-1.5.3.tgz#5018e674b51c393e4d50614275dc017e27c4a2a2\"\n+ dependencies:\n+ browserslist \"^1.0.1\"\n+ caniuse-db \"^1.0.30000346\"\n+ lodash.memoize \"^4.1.0\"\n+ lodash.uniq \"^4.3.0\"\n+\n+caniuse-db@^1.0.30000346, caniuse-db@^1.0.30000624, caniuse-db@^1.0.30000628:\n+ version \"1.0.30000631\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caniuse-db\/-\/caniuse-db-1.0.30000631.tgz#8aa6f65cff452c4aba1c2aaa1e724102fbb9114f\"\n+\n+capture-stack-trace@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/capture-stack-trace\/-\/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d\"\n+\n+caseless@~0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/caseless\/-\/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7\"\n+\n+center-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/center-align\/-\/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad\"\n+ dependencies:\n+ align-text \"^0.1.3\"\n+ lazy-cache \"^1.0.3\"\n+\n+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chalk\/-\/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98\"\n+ dependencies:\n+ ansi-styles \"^2.2.1\"\n+ escape-string-regexp \"^1.0.2\"\n+ has-ansi \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^2.0.0\"\n+\n+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/chokidar\/-\/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2\"\n+ dependencies:\n+ anymatch \"^1.3.0\"\n+ async-each \"^1.0.0\"\n+ glob-parent \"^2.0.0\"\n+ inherits \"^2.0.1\"\n+ is-binary-path \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+ path-is-absolute \"^1.0.0\"\n+ readdirp \"^2.0.0\"\n+ optionalDependencies:\n+ fsevents \"^1.0.0\"\n+\n+cipher-base@^1.0.0, cipher-base@^1.0.1:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cipher-base\/-\/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+clap@^1.0.9:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clap\/-\/clap-1.1.2.tgz#316545bf22229225a2cecaa6824cd2f56a9709ed\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+\n+clean-css@4.0.x:\n+ version \"4.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clean-css\/-\/clean-css-4.0.8.tgz#063dfd593404d3a3d1db494d4b6d0f378b0781b6\"\n+ dependencies:\n+ source-map \"0.5.x\"\n+\n+cli-boxes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-boxes\/-\/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143\"\n+\n+cli-cursor@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-cursor\/-\/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5\"\n+ dependencies:\n+ restore-cursor \"^2.0.0\"\n+\n+cli-width@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cli-width\/-\/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a\"\n+\n+cliui@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1\"\n+ dependencies:\n+ center-align \"^0.1.1\"\n+ right-align \"^0.1.1\"\n+ wordwrap \"0.0.2\"\n+\n+cliui@^3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cliui\/-\/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wrap-ansi \"^2.0.0\"\n+\n+clone@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/clone\/-\/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149\"\n+\n+co@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/co\/-\/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184\"\n+\n+coa@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/coa\/-\/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3\"\n+ dependencies:\n+ q \"^1.1.2\"\n+\n+code-point-at@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/code-point-at\/-\/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77\"\n+\n+codelyzer@~2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/codelyzer\/-\/codelyzer-2.0.1.tgz#d0f7121f67a8424c92d21d3b31f3640b83def9ed\"\n+ dependencies:\n+ app-root-path \"^2.0.1\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssauron \"^1.4.0\"\n+ semver-dsl \"^1.0.1\"\n+ source-map \"^0.5.6\"\n+ sprintf-js \"^1.0.3\"\n+\n+color-convert@^1.3.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-convert\/-\/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a\"\n+ dependencies:\n+ color-name \"^1.1.1\"\n+\n+color-name@^1.0.0, color-name@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-name\/-\/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689\"\n+\n+color-string@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color-string\/-\/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991\"\n+ dependencies:\n+ color-name \"^1.0.0\"\n+\n+color@^0.11.0:\n+ version \"0.11.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/color\/-\/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764\"\n+ dependencies:\n+ clone \"^1.0.2\"\n+ color-convert \"^1.3.0\"\n+ color-string \"^0.3.0\"\n+\n+colormin@^1.0.5:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colormin\/-\/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133\"\n+ dependencies:\n+ color \"^0.11.0\"\n+ css-color-names \"0.0.4\"\n+ has \"^1.0.1\"\n+\n+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2, colors@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/colors\/-\/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63\"\n+\n+combine-lists@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combine-lists\/-\/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6\"\n+ dependencies:\n+ lodash \"^4.5.0\"\n+\n+combined-stream@^1.0.5, combined-stream@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/combined-stream\/-\/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009\"\n+ dependencies:\n+ delayed-stream \"~1.0.0\"\n+\n+commander@^2.9.0, commander@2.9.x:\n+ version \"2.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/commander\/-\/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4\"\n+ dependencies:\n+ graceful-readlink \">= 1.0.0\"\n+\n+common-tags@^1.3.1:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/common-tags\/-\/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0\"\n+ dependencies:\n+ babel-runtime \"^6.18.0\"\n+\n+component-bind@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-bind\/-\/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1\"\n+\n+component-emitter@1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3\"\n+\n+component-emitter@1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-emitter\/-\/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6\"\n+\n+component-inherit@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/component-inherit\/-\/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143\"\n+\n+compressible@~2.0.8:\n+ version \"2.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compressible\/-\/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425\"\n+ dependencies:\n+ mime-db \">= 1.24.0 < 2\"\n+\n+compression@^1.5.2:\n+ version \"1.6.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/compression\/-\/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ bytes \"2.3.0\"\n+ compressible \"~2.0.8\"\n+ debug \"~2.2.0\"\n+ on-headers \"~1.0.1\"\n+ vary \"~1.1.0\"\n+\n+concat-map@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/concat-map\/-\/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b\"\n+\n+configstore@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/configstore\/-\/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1\"\n+ dependencies:\n+ dot-prop \"^3.0.0\"\n+ graceful-fs \"^4.1.2\"\n+ mkdirp \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+ os-tmpdir \"^1.0.0\"\n+ osenv \"^0.1.0\"\n+ uuid \"^2.0.1\"\n+ write-file-atomic \"^1.1.2\"\n+ xdg-basedir \"^2.0.0\"\n+\n+connect-history-api-fallback@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect-history-api-fallback\/-\/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169\"\n+\n+connect@^3.3.5:\n+ version \"3.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/connect\/-\/connect-3.6.0.tgz#f09a4f7dcd17324b663b725c815bdb1c4158a46e\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ finalhandler \"1.0.0\"\n+ parseurl \"~1.3.1\"\n+ utils-merge \"1.0.0\"\n+\n+console-browserify@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-browserify\/-\/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10\"\n+ dependencies:\n+ date-now \"^0.1.4\"\n+\n+console-control-strings@^1.0.0, console-control-strings@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/console-control-strings\/-\/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e\"\n+\n+constants-browserify@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/constants-browserify\/-\/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75\"\n+\n+content-disposition@0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-disposition\/-\/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4\"\n+\n+content-type@~1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/content-type\/-\/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed\"\n+\n+convert-source-map@^1.3.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/convert-source-map\/-\/convert-source-map-1.4.0.tgz#e3dad195bf61bfe13a7a3c73e9876ec14a0268f3\"\n+\n+cookie-signature@1.0.6:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie-signature\/-\/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c\"\n+\n+cookie@0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cookie\/-\/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb\"\n+\n+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-js\/-\/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e\"\n+\n+core-util-is@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/core-util-is\/-\/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7\"\n+\n+create-ecdh@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-ecdh\/-\/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ elliptic \"^6.0.0\"\n+\n+create-error-class@^3.0.1:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-error-class\/-\/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6\"\n+ dependencies:\n+ capture-stack-trace \"^1.0.0\"\n+\n+create-hash@^1.1.0, create-hash@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hash\/-\/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad\"\n+ dependencies:\n+ cipher-base \"^1.0.1\"\n+ inherits \"^2.0.1\"\n+ ripemd160 \"^1.0.0\"\n+ sha.js \"^2.3.6\"\n+\n+create-hmac@^1.1.0, create-hmac@^1.1.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/create-hmac\/-\/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170\"\n+ dependencies:\n+ create-hash \"^1.1.0\"\n+ inherits \"^2.0.1\"\n+\n+cross-spawn@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cross-spawn\/-\/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982\"\n+ dependencies:\n+ lru-cache \"^4.0.1\"\n+ which \"^1.2.9\"\n+\n+cryptiles@2.x.x:\n+ version \"2.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cryptiles\/-\/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8\"\n+ dependencies:\n+ boom \"2.x.x\"\n+\n+crypto-browserify@^3.11.0:\n+ version \"3.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/crypto-browserify\/-\/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522\"\n+ dependencies:\n+ browserify-cipher \"^1.0.0\"\n+ browserify-sign \"^4.0.0\"\n+ create-ecdh \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ create-hmac \"^1.1.0\"\n+ diffie-hellman \"^5.0.0\"\n+ inherits \"^2.0.1\"\n+ pbkdf2 \"^3.0.3\"\n+ public-encrypt \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+css-color-names@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-color-names\/-\/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0\"\n+\n+css-loader@^0.26.1:\n+ version \"0.26.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-loader\/-\/css-loader-0.26.2.tgz#a9cd4c2b1a559b45d8efc04fc311ab5d2aaccb9d\"\n+ dependencies:\n+ babel-code-frame \"^6.11.0\"\n+ css-selector-tokenizer \"^0.7.0\"\n+ cssnano \">=2.6.1 <4\"\n+ loader-utils \"^1.0.2\"\n+ lodash.camelcase \"^4.3.0\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.6\"\n+ postcss-modules-extract-imports \"^1.0.0\"\n+ postcss-modules-local-by-default \"^1.0.1\"\n+ postcss-modules-scope \"^1.0.0\"\n+ postcss-modules-values \"^1.1.0\"\n+ source-list-map \"^0.1.7\"\n+\n+css-parse@1.7.x:\n+ version \"1.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-parse\/-\/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b\"\n+\n+css-select@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-select\/-\/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+ css-what \"2.1\"\n+ domutils \"1.5.1\"\n+ nth-check \"~1.0.1\"\n+\n+css-selector-tokenizer@^0.6.0:\n+ version \"0.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-selector-tokenizer@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-selector-tokenizer\/-\/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86\"\n+ dependencies:\n+ cssesc \"^0.1.0\"\n+ fastparse \"^1.1.1\"\n+ regexpu-core \"^1.0.0\"\n+\n+css-what@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/css-what\/-\/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd\"\n+\n+cssauron@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssauron\/-\/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8\"\n+ dependencies:\n+ through X.X.X\n+\n+cssesc@^0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssesc\/-\/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4\"\n+\n+cssnano@^3.10.0, \"cssnano@>=2.6.1 <4\":\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/cssnano\/-\/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38\"\n+ dependencies:\n+ autoprefixer \"^6.3.1\"\n+ decamelize \"^1.1.2\"\n+ defined \"^1.0.0\"\n+ has \"^1.0.1\"\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-calc \"^5.2.0\"\n+ postcss-colormin \"^2.1.8\"\n+ postcss-convert-values \"^2.3.4\"\n+ postcss-discard-comments \"^2.0.4\"\n+ postcss-discard-duplicates \"^2.0.1\"\n+ postcss-discard-empty \"^2.0.1\"\n+ postcss-discard-overridden \"^0.1.1\"\n+ postcss-discard-unused \"^2.2.1\"\n+ postcss-filter-plugins \"^2.0.0\"\n+ postcss-merge-idents \"^2.1.5\"\n+ postcss-merge-longhand \"^2.0.1\"\n+ postcss-merge-rules \"^2.0.3\"\n+ postcss-minify-font-values \"^1.0.2\"\n+ postcss-minify-gradients \"^1.0.1\"\n+ postcss-minify-params \"^1.0.4\"\n+ postcss-minify-selectors \"^2.0.4\"\n+ postcss-normalize-charset \"^1.1.0\"\n+ postcss-normalize-url \"^3.0.7\"\n+ postcss-ordered-values \"^2.1.0\"\n+ postcss-reduce-idents \"^2.2.2\"\n+ postcss-reduce-initial \"^1.0.0\"\n+ postcss-reduce-transforms \"^1.0.3\"\n+ postcss-svgo \"^2.1.1\"\n+ postcss-unique-selectors \"^2.0.2\"\n+ postcss-value-parser \"^3.2.3\"\n+ postcss-zindex \"^2.0.1\"\n+\n+csso@~2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/csso\/-\/csso-2.3.1.tgz#4f8d91a156f2f1c2aebb40b8fb1b5eb83d94d3b9\"\n+ dependencies:\n+ clap \"^1.0.9\"\n+ source-map \"^0.5.3\"\n+\n+currently-unhandled@^0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/currently-unhandled\/-\/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea\"\n+ dependencies:\n+ array-find-index \"^1.0.1\"\n+\n+custom-event@~1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/custom-event\/-\/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425\"\n+\n+dashdash@^1.12.0:\n+ version \"1.14.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dashdash\/-\/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+date-now@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/date-now\/-\/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b\"\n+\n+debug@*, debug@^2.1.3, debug@^2.2.0, debug@2, debug@2.6.1:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+debug@~2.2.0, debug@2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da\"\n+ dependencies:\n+ ms \"0.7.1\"\n+\n+debug@2.3.3:\n+ version \"2.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/debug\/-\/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c\"\n+ dependencies:\n+ ms \"0.7.2\"\n+\n+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/decamelize\/-\/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290\"\n+\n+deep-extend@~0.4.0:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-extend\/-\/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253\"\n+\n+deep-freeze-strict@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/deep-freeze-strict\/-\/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0\"\n+\n+default-require-extensions@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/default-require-extensions\/-\/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8\"\n+ dependencies:\n+ strip-bom \"^2.0.0\"\n+\n+defined@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/defined\/-\/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693\"\n+\n+del@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/del\/-\/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8\"\n+ dependencies:\n+ globby \"^5.0.0\"\n+ is-path-cwd \"^1.0.0\"\n+ is-path-in-cwd \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+delayed-stream@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delayed-stream\/-\/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619\"\n+\n+delegates@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/delegates\/-\/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a\"\n+\n+denodeify@^1.2.1:\n+ version \"1.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/denodeify\/-\/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631\"\n+\n+depd@~1.1.0, depd@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/depd\/-\/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3\"\n+\n+des.js@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/des.js\/-\/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+\n+destroy@~1.0.4:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/destroy\/-\/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80\"\n+\n+detect-indent@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/detect-indent\/-\/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+di@^0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/di\/-\/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c\"\n+\n+diff@^3.0.1, diff@^3.1.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diff\/-\/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9\"\n+\n+diffie-hellman@^5.0.0:\n+ version \"5.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/diffie-hellman\/-\/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ miller-rabin \"^4.0.0\"\n+ randombytes \"^2.0.0\"\n+\n+directory-encoder@^0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/directory-encoder\/-\/directory-encoder-0.7.2.tgz#59b4e2aa4f25422f6c63b527b462f5e2d0dd2c58\"\n+ dependencies:\n+ fs-extra \"^0.23.1\"\n+ handlebars \"^1.3.0\"\n+ img-stats \"^0.5.2\"\n+\n+dom-converter@~0.1:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-converter\/-\/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b\"\n+ dependencies:\n+ utila \"~0.3\"\n+\n+dom-serialize@^2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serialize\/-\/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b\"\n+ dependencies:\n+ custom-event \"~1.0.0\"\n+ ent \"~2.2.0\"\n+ extend \"^3.0.0\"\n+ void-elements \"^2.0.0\"\n+\n+dom-serializer@0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dom-serializer\/-\/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82\"\n+ dependencies:\n+ domelementtype \"~1.1.1\"\n+ entities \"~1.1.1\"\n+\n+domain-browser@^1.1.1:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domain-browser\/-\/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc\"\n+\n+domelementtype@~1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b\"\n+\n+domelementtype@1:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domelementtype\/-\/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2\"\n+\n+domhandler@2.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domhandler\/-\/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.1:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485\"\n+ dependencies:\n+ domelementtype \"1\"\n+\n+domutils@1.5.1:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/domutils\/-\/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf\"\n+ dependencies:\n+ dom-serializer \"0\"\n+ domelementtype \"1\"\n+\n+dot-prop@^3.0.0:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/dot-prop\/-\/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177\"\n+ dependencies:\n+ is-obj \"^1.0.0\"\n+\n+duplexer2@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/duplexer2\/-\/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1\"\n+ dependencies:\n+ readable-stream \"^2.0.2\"\n+\n+ecc-jsbn@~0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ecc-jsbn\/-\/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+ee-first@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ee-first\/-\/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d\"\n+\n+electron-to-chromium@^1.2.3:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/electron-to-chromium\/-\/electron-to-chromium-1.2.5.tgz#d373727228843dfd8466c276089f13b40927a952\"\n+\n+elliptic@^6.0.0:\n+ version \"6.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/elliptic\/-\/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df\"\n+ dependencies:\n+ bn.js \"^4.4.0\"\n+ brorand \"^1.0.1\"\n+ hash.js \"^1.0.0\"\n+ hmac-drbg \"^1.0.0\"\n+ inherits \"^2.0.1\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.0\"\n+\n+ember-cli-normalize-entity-name@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-normalize-entity-name\/-\/ember-cli-normalize-entity-name-1.0.0.tgz#0b14f7bcbc599aa117b5fddc81e4fd03c4bad5b7\"\n+ dependencies:\n+ silent-error \"^1.0.0\"\n+\n+ember-cli-string-utils@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ember-cli-string-utils\/-\/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1\"\n+\n+emojis-list@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/emojis-list\/-\/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389\"\n+\n+encodeurl@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/encodeurl\/-\/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20\"\n+\n+engine.io-client@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-client\/-\/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766\"\n+ dependencies:\n+ component-emitter \"1.2.1\"\n+ component-inherit \"0.0.3\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ has-cors \"1.1.0\"\n+ indexof \"0.0.1\"\n+ parsejson \"0.0.3\"\n+ parseqs \"0.0.5\"\n+ parseuri \"0.0.5\"\n+ ws \"1.1.1\"\n+ xmlhttprequest-ssl \"1.5.3\"\n+ yeast \"0.1.2\"\n+\n+engine.io-parser@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io-parser\/-\/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a\"\n+ dependencies:\n+ after \"0.8.2\"\n+ arraybuffer.slice \"0.0.6\"\n+ base64-arraybuffer \"0.1.5\"\n+ blob \"0.0.4\"\n+ has-binary \"0.1.7\"\n+ wtf-8 \"1.0.0\"\n+\n+engine.io@1.8.2:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/engine.io\/-\/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e\"\n+ dependencies:\n+ accepts \"1.3.3\"\n+ base64id \"1.0.0\"\n+ cookie \"0.3.1\"\n+ debug \"2.3.3\"\n+ engine.io-parser \"1.3.2\"\n+ ws \"1.1.1\"\n+\n+enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/enhanced-resolve\/-\/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ memory-fs \"^0.4.0\"\n+ object-assign \"^4.0.1\"\n+ tapable \"^0.2.5\"\n+\n+ensure-posix-path@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ensure-posix-path\/-\/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2\"\n+\n+ent@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ent\/-\/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d\"\n+\n+entities@~1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/entities\/-\/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0\"\n+\n+errno@^0.1.1, errno@^0.1.3:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/errno\/-\/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d\"\n+ dependencies:\n+ prr \"~0.0.0\"\n+\n+error-ex@^1.2.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/error-ex\/-\/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9\"\n+ dependencies:\n+ is-arrayish \"^0.2.1\"\n+\n+escape-html@~1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-html\/-\/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988\"\n+\n+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/escape-string-regexp\/-\/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4\"\n+\n+esprima@^2.6.0:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581\"\n+\n+esprima@^3.1.1:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esprima\/-\/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633\"\n+\n+esutils@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/esutils\/-\/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b\"\n+\n+etag@~1.8.0:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/etag\/-\/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051\"\n+\n+eventemitter3@1.x.x:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventemitter3\/-\/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508\"\n+\n+events@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/events\/-\/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924\"\n+\n+eventsource@~0.1.6:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/eventsource\/-\/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232\"\n+ dependencies:\n+ original \">=0.0.5\"\n+\n+evp_bytestokey@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/evp_bytestokey\/-\/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53\"\n+ dependencies:\n+ create-hash \"^1.1.1\"\n+\n+exit@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exit\/-\/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c\"\n+\n+expand-braces@^0.1.1:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-braces\/-\/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea\"\n+ dependencies:\n+ array-slice \"^0.2.3\"\n+ array-unique \"^0.2.1\"\n+ braces \"^0.1.2\"\n+\n+expand-brackets@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-brackets\/-\/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b\"\n+ dependencies:\n+ is-posix-bracket \"^0.1.0\"\n+\n+expand-range@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044\"\n+ dependencies:\n+ is-number \"^0.1.1\"\n+ repeat-string \"^0.2.2\"\n+\n+expand-range@^1.8.1:\n+ version \"1.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/expand-range\/-\/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337\"\n+ dependencies:\n+ fill-range \"^2.1.0\"\n+\n+exports-loader@^0.6.3:\n+ version \"0.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/exports-loader\/-\/exports-loader-0.6.4.tgz#d70fc6121975b35fc12830cf52754be2740fc886\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ source-map \"0.5.x\"\n+\n+express@^4.13.3:\n+ version \"4.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/express\/-\/express-4.15.0.tgz#8fb125829f70a04a59e1c40ceb8dea19cf5c879c\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ array-flatten \"1.1.1\"\n+ content-disposition \"0.5.2\"\n+ content-type \"~1.0.2\"\n+ cookie \"0.3.1\"\n+ cookie-signature \"1.0.6\"\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ finalhandler \"~1.0.0\"\n+ fresh \"0.5.0\"\n+ merge-descriptors \"1.0.1\"\n+ methods \"~1.1.2\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ path-to-regexp \"0.1.7\"\n+ proxy-addr \"~1.1.3\"\n+ qs \"6.3.1\"\n+ range-parser \"~1.2.0\"\n+ send \"0.15.0\"\n+ serve-static \"1.12.0\"\n+ setprototypeof \"1.0.3\"\n+ statuses \"~1.3.1\"\n+ type-is \"~1.6.14\"\n+ utils-merge \"1.0.0\"\n+ vary \"~1.1.0\"\n+\n+extend@^3.0.0, extend@~3.0.0, extend@3:\n+ version \"3.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extend\/-\/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4\"\n+\n+external-editor@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/external-editor\/-\/external-editor-2.0.1.tgz#4c597c6c88fa6410e41dbbaa7b1be2336aa31095\"\n+ dependencies:\n+ tmp \"^0.0.31\"\n+\n+extglob@^0.3.1:\n+ version \"0.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extglob\/-\/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+extract-text-webpack-plugin@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extract-text-webpack-plugin\/-\/extract-text-webpack-plugin-2.0.0.tgz#8640f72609800a3528f13a2a9634d566a5c1ae60\"\n+ dependencies:\n+ ajv \"^4.11.2\"\n+ async \"^2.1.2\"\n+ loader-utils \"^1.0.2\"\n+ webpack-sources \"^0.1.0\"\n+\n+extsprintf@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/extsprintf\/-\/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550\"\n+\n+fastparse@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fastparse\/-\/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8\"\n+\n+faye-websocket@^0.10.0:\n+ version \"0.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+faye-websocket@~0.11.0:\n+ version \"0.11.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/faye-websocket\/-\/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38\"\n+ dependencies:\n+ websocket-driver \">=0.5.1\"\n+\n+figures@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/figures\/-\/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962\"\n+ dependencies:\n+ escape-string-regexp \"^1.0.5\"\n+\n+file-loader@^0.10.0:\n+ version \"0.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/file-loader\/-\/file-loader-0.10.1.tgz#815034119891fc6441fb5a64c11bc93c22ddd842\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+filename-regex@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filename-regex\/-\/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775\"\n+\n+fileset@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fileset\/-\/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0\"\n+ dependencies:\n+ glob \"^7.0.3\"\n+ minimatch \"^3.0.3\"\n+\n+fill-range@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fill-range\/-\/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723\"\n+ dependencies:\n+ is-number \"^2.1.0\"\n+ isobject \"^2.0.0\"\n+ randomatic \"^1.1.3\"\n+ repeat-element \"^1.1.2\"\n+ repeat-string \"^1.5.2\"\n+\n+filled-array@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/filled-array\/-\/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84\"\n+\n+finalhandler@~1.0.0, finalhandler@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/finalhandler\/-\/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ on-finished \"~2.3.0\"\n+ parseurl \"~1.3.1\"\n+ statuses \"~1.3.1\"\n+ unpipe \"~1.0.0\"\n+\n+find-up@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/find-up\/-\/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f\"\n+ dependencies:\n+ path-exists \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+findup-sync@~0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/findup-sync\/-\/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16\"\n+ dependencies:\n+ glob \"~5.0.0\"\n+\n+flatten@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/flatten\/-\/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782\"\n+\n+for-in@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-in\/-\/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80\"\n+\n+for-own@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/for-own\/-\/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce\"\n+ dependencies:\n+ for-in \"^1.0.1\"\n+\n+forever-agent@~0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forever-agent\/-\/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91\"\n+\n+form-data@~2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/form-data\/-\/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4\"\n+ dependencies:\n+ asynckit \"^0.4.0\"\n+ combined-stream \"^1.0.5\"\n+ mime-types \"^2.1.12\"\n+\n+forwarded@~0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/forwarded\/-\/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363\"\n+\n+fresh@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fresh\/-\/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e\"\n+\n+fs-access@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-access\/-\/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a\"\n+ dependencies:\n+ null-check \"^1.0.0\"\n+\n+fs-extra@^0.23.1:\n+ version \"0.23.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-0.23.1.tgz#6611dba6adf2ab8dc9c69fab37cddf8818157e3d\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+ path-is-absolute \"^1.0.0\"\n+ rimraf \"^2.2.8\"\n+\n+fs-extra@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs-extra\/-\/fs-extra-2.0.0.tgz#337352bded4a0b714f3eb84de8cea765e9d37600\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ jsonfile \"^2.1.0\"\n+\n+fs.realpath@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fs.realpath\/-\/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f\"\n+\n+fsevents@^1.0.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fsevents\/-\/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff\"\n+ dependencies:\n+ nan \"^2.3.0\"\n+ node-pre-gyp \"^0.6.29\"\n+\n+fstream-ignore@~1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream-ignore\/-\/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ inherits \"2\"\n+ minimatch \"^3.0.0\"\n+\n+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:\n+ version \"1.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/fstream\/-\/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ inherits \"~2.0.0\"\n+ mkdirp \">=0.5 0\"\n+ rimraf \"2\"\n+\n+function-bind@^1.0.2:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/function-bind\/-\/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771\"\n+\n+gauge@~2.7.1:\n+ version \"2.7.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gauge\/-\/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09\"\n+ dependencies:\n+ aproba \"^1.0.3\"\n+ console-control-strings \"^1.0.0\"\n+ has-unicode \"^2.0.0\"\n+ object-assign \"^4.1.0\"\n+ signal-exit \"^3.0.0\"\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+ wide-align \"^1.1.0\"\n+\n+gaze@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/gaze\/-\/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105\"\n+ dependencies:\n+ globule \"^1.0.0\"\n+\n+generate-function@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-function\/-\/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74\"\n+\n+generate-object-property@^1.1.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/generate-object-property\/-\/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0\"\n+ dependencies:\n+ is-property \"^1.0.0\"\n+\n+get-caller-file@^1.0.0, get-caller-file@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-caller-file\/-\/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5\"\n+\n+get-stdin@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/get-stdin\/-\/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe\"\n+\n+getpass@^0.1.1:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/getpass\/-\/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6\"\n+ dependencies:\n+ assert-plus \"^1.0.0\"\n+\n+glob-base@^0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-base\/-\/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4\"\n+ dependencies:\n+ glob-parent \"^2.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+glob-parent@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob-parent\/-\/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28\"\n+ dependencies:\n+ is-glob \"^2.0.0\"\n+\n+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@~7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@~5.0.0:\n+ version \"5.0.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1\"\n+ dependencies:\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"2 || 3\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+glob@7.0.x:\n+ version \"7.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/glob\/-\/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a\"\n+ dependencies:\n+ fs.realpath \"^1.0.0\"\n+ inflight \"^1.0.4\"\n+ inherits \"2\"\n+ minimatch \"^3.0.2\"\n+ once \"^1.3.0\"\n+ path-is-absolute \"^1.0.0\"\n+\n+globals@^9.0.0:\n+ version \"9.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globals\/-\/globals-9.16.0.tgz#63e903658171ec2d9f51b1d31de5e2b8dc01fb80\"\n+\n+globby@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globby\/-\/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d\"\n+ dependencies:\n+ array-union \"^1.0.1\"\n+ arrify \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ object-assign \"^4.0.1\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+globule@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/globule\/-\/globule-1.1.0.tgz#c49352e4dc183d85893ee825385eb994bb6df45f\"\n+ dependencies:\n+ glob \"~7.1.1\"\n+ lodash \"~4.16.4\"\n+ minimatch \"~3.0.2\"\n+\n+got@^5.0.0:\n+ version \"5.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/got\/-\/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35\"\n+ dependencies:\n+ create-error-class \"^3.0.1\"\n+ duplexer2 \"^0.1.4\"\n+ is-redirect \"^1.0.0\"\n+ is-retry-allowed \"^1.0.0\"\n+ is-stream \"^1.0.0\"\n+ lowercase-keys \"^1.0.0\"\n+ node-status-codes \"^1.0.0\"\n+ object-assign \"^4.0.1\"\n+ parse-json \"^2.1.0\"\n+ pinkie-promise \"^2.0.0\"\n+ read-all-stream \"^3.0.0\"\n+ readable-stream \"^2.0.5\"\n+ timed-out \"^3.0.0\"\n+ unzip-response \"^1.0.2\"\n+ url-parse-lax \"^1.0.0\"\n+\n+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:\n+ version \"4.1.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-fs\/-\/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658\"\n+\n+\"graceful-readlink@>= 1.0.0\":\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/graceful-readlink\/-\/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725\"\n+\n+handle-thing@^1.2.4:\n+ version \"1.2.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handle-thing\/-\/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4\"\n+\n+handlebars@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-1.3.0.tgz#9e9b130a93e389491322d975cf3ec1818c37ce34\"\n+ dependencies:\n+ optimist \"~0.3\"\n+ optionalDependencies:\n+ uglify-js \"~2.3\"\n+\n+handlebars@^4.0.3:\n+ version \"4.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/handlebars\/-\/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7\"\n+ dependencies:\n+ async \"^1.4.0\"\n+ optimist \"^0.6.1\"\n+ source-map \"^0.4.4\"\n+ optionalDependencies:\n+ uglify-js \"^2.6\"\n+\n+har-validator@~2.0.6:\n+ version \"2.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/har-validator\/-\/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d\"\n+ dependencies:\n+ chalk \"^1.1.1\"\n+ commander \"^2.9.0\"\n+ is-my-json-valid \"^2.12.4\"\n+ pinkie-promise \"^2.0.0\"\n+\n+has-ansi@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-ansi\/-\/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+has-binary@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-binary\/-\/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c\"\n+ dependencies:\n+ isarray \"0.0.1\"\n+\n+has-cors@1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-cors\/-\/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39\"\n+\n+has-flag@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-flag\/-\/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa\"\n+\n+has-unicode@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has-unicode\/-\/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9\"\n+\n+has@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/has\/-\/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28\"\n+ dependencies:\n+ function-bind \"^1.0.2\"\n+\n+hash.js@^1.0.0, hash.js@^1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hash.js\/-\/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+hawk@~3.1.3:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hawk\/-\/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4\"\n+ dependencies:\n+ boom \"2.x.x\"\n+ cryptiles \"2.x.x\"\n+ hoek \"2.x.x\"\n+ sntp \"1.x.x\"\n+\n+he@1.1.x:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/he\/-\/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd\"\n+\n+hmac-drbg@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hmac-drbg\/-\/hmac-drbg-1.0.0.tgz#3db471f45aae4a994a0688322171f51b8b91bee5\"\n+ dependencies:\n+ hash.js \"^1.0.3\"\n+ minimalistic-assert \"^1.0.0\"\n+ minimalistic-crypto-utils \"^1.0.1\"\n+\n+hoek@2.x.x:\n+ version \"2.16.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hoek\/-\/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed\"\n+\n+hosted-git-info@^2.1.4:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hosted-git-info\/-\/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5\"\n+\n+hpack.js@^2.1.6:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/hpack.js\/-\/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+ obuf \"^1.0.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.1.0\"\n+\n+html-comment-regex@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-comment-regex\/-\/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e\"\n+\n+html-entities@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-entities\/-\/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2\"\n+\n+html-minifier@^3.2.3:\n+ version \"3.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-minifier\/-\/html-minifier-3.4.0.tgz#80f236b7374d70f017fecaac42d37bb1170d2975\"\n+ dependencies:\n+ camel-case \"3.0.x\"\n+ clean-css \"4.0.x\"\n+ commander \"2.9.x\"\n+ he \"1.1.x\"\n+ ncname \"1.0.x\"\n+ param-case \"2.1.x\"\n+ relateurl \"0.2.x\"\n+ uglify-js \"2.8.x\"\n+\n+html-webpack-plugin@^2.19.0:\n+ version \"2.28.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/html-webpack-plugin\/-\/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009\"\n+ dependencies:\n+ bluebird \"^3.4.7\"\n+ html-minifier \"^3.2.3\"\n+ loader-utils \"^0.2.16\"\n+ lodash \"^4.17.3\"\n+ pretty-error \"^2.0.2\"\n+ toposort \"^1.0.0\"\n+\n+htmlparser2@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/htmlparser2\/-\/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe\"\n+ dependencies:\n+ domelementtype \"1\"\n+ domhandler \"2.1\"\n+ domutils \"1.1\"\n+ readable-stream \"1.0\"\n+\n+http-deceiver@^1.2.4:\n+ version \"1.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-deceiver\/-\/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87\"\n+\n+http-errors@~1.5.0:\n+ version \"1.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750\"\n+ dependencies:\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.2\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-errors@~1.6.1:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-errors\/-\/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257\"\n+ dependencies:\n+ depd \"1.1.0\"\n+ inherits \"2.0.3\"\n+ setprototypeof \"1.0.3\"\n+ statuses \">= 1.3.1 < 2\"\n+\n+http-proxy-middleware@~0.17.1:\n+ version \"0.17.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy-middleware\/-\/http-proxy-middleware-0.17.3.tgz#940382147149b856084f5534752d5b5a8168cd1d\"\n+ dependencies:\n+ http-proxy \"^1.16.2\"\n+ is-glob \"^3.1.0\"\n+ lodash \"^4.17.2\"\n+ micromatch \"^2.3.11\"\n+\n+http-proxy@^1.13.0, http-proxy@^1.16.2:\n+ version \"1.16.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-proxy\/-\/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742\"\n+ dependencies:\n+ eventemitter3 \"1.x.x\"\n+ requires-port \"1.x.x\"\n+\n+http-signature@~1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/http-signature\/-\/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf\"\n+ dependencies:\n+ assert-plus \"^0.2.0\"\n+ jsprim \"^1.2.2\"\n+ sshpk \"^1.7.0\"\n+\n+https-browserify@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-browserify\/-\/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82\"\n+\n+https-proxy-agent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/https-proxy-agent\/-\/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6\"\n+ dependencies:\n+ agent-base \"2\"\n+ debug \"2\"\n+ extend \"3\"\n+\n+iconv-lite@0.4.15:\n+ version \"0.4.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/iconv-lite\/-\/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb\"\n+\n+icss-replace-symbols@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/icss-replace-symbols\/-\/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5\"\n+\n+ieee754@^1.1.4:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ieee754\/-\/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4\"\n+\n+image-size@~0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/image-size\/-\/image-size-0.5.1.tgz#28eea8548a4b1443480ddddc1e083ae54652439f\"\n+\n+img-stats@^0.5.2:\n+ version \"0.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/img-stats\/-\/img-stats-0.5.2.tgz#c203496c42f2d9eb2e5ab8232fa756bab32c9e2b\"\n+ dependencies:\n+ xmldom \"^0.1.19\"\n+\n+imurmurhash@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/imurmurhash\/-\/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea\"\n+\n+in-publish@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/in-publish\/-\/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51\"\n+\n+indent-string@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indent-string\/-\/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80\"\n+ dependencies:\n+ repeating \"^2.0.0\"\n+\n+indexes-of@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexes-of\/-\/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607\"\n+\n+indexof@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/indexof\/-\/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d\"\n+\n+inflection@^1.7.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflection\/-\/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416\"\n+\n+inflight@^1.0.4:\n+ version \"1.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inflight\/-\/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9\"\n+ dependencies:\n+ once \"^1.3.0\"\n+ wrappy \"1\"\n+\n+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2, inherits@2.0.3:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de\"\n+\n+inherits@2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inherits\/-\/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1\"\n+\n+ini@^1.3.4, ini@~1.3.0:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ini\/-\/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e\"\n+\n+inquirer@^3.0.0:\n+ version \"3.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/inquirer\/-\/inquirer-3.0.5.tgz#172cabc8eacbfb91d595f5d7c354b446b8141f65\"\n+ dependencies:\n+ ansi-escapes \"^1.1.0\"\n+ chalk \"^1.0.0\"\n+ cli-cursor \"^2.1.0\"\n+ cli-width \"^2.0.0\"\n+ external-editor \"^2.0.1\"\n+ figures \"^2.0.0\"\n+ lodash \"^4.3.0\"\n+ mute-stream \"0.0.7\"\n+ run-async \"^2.2.0\"\n+ rx \"^4.1.0\"\n+ string-width \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+ through \"^2.3.6\"\n+\n+interpret@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/interpret\/-\/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c\"\n+\n+invariant@^2.2.0:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invariant\/-\/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360\"\n+ dependencies:\n+ loose-envify \"^1.0.0\"\n+\n+invert-kv@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/invert-kv\/-\/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6\"\n+\n+ipaddr.js@1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ipaddr.js\/-\/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4\"\n+\n+is-absolute-url@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-absolute-url\/-\/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6\"\n+\n+is-arrayish@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-arrayish\/-\/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d\"\n+\n+is-binary-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-binary-path\/-\/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898\"\n+ dependencies:\n+ binary-extensions \"^1.0.0\"\n+\n+is-buffer@^1.0.2:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-buffer\/-\/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b\"\n+\n+is-builtin-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-builtin-module\/-\/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe\"\n+ dependencies:\n+ builtin-modules \"^1.0.0\"\n+\n+is-dotfile@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-dotfile\/-\/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d\"\n+\n+is-equal-shallow@^0.1.3:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-equal-shallow\/-\/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534\"\n+ dependencies:\n+ is-primitive \"^2.0.0\"\n+\n+is-extendable@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extendable\/-\/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89\"\n+\n+is-extglob@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0\"\n+\n+is-extglob@^2.1.0:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-extglob\/-\/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2\"\n+\n+is-finite@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-finite\/-\/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb\"\n+ dependencies:\n+ number-is-nan \"^1.0.0\"\n+\n+is-fullwidth-code-point@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-fullwidth-code-point\/-\/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f\"\n+\n+is-glob@^2.0.0, is-glob@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863\"\n+ dependencies:\n+ is-extglob \"^1.0.0\"\n+\n+is-glob@^3.1.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-glob\/-\/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a\"\n+ dependencies:\n+ is-extglob \"^2.1.0\"\n+\n+is-my-json-valid@^2.12.4:\n+ version \"2.16.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-my-json-valid\/-\/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693\"\n+ dependencies:\n+ generate-function \"^2.0.0\"\n+ generate-object-property \"^1.1.0\"\n+ jsonpointer \"^4.0.0\"\n+ xtend \"^4.0.0\"\n+\n+is-npm@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-npm\/-\/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4\"\n+\n+is-number@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806\"\n+\n+is-number@^2.0.2, is-number@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-number\/-\/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f\"\n+ dependencies:\n+ kind-of \"^3.0.2\"\n+\n+is-obj@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-obj\/-\/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f\"\n+\n+is-path-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-cwd\/-\/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d\"\n+\n+is-path-in-cwd@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-in-cwd\/-\/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc\"\n+ dependencies:\n+ is-path-inside \"^1.0.0\"\n+\n+is-path-inside@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-path-inside\/-\/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f\"\n+ dependencies:\n+ path-is-inside \"^1.0.1\"\n+\n+is-plain-obj@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-plain-obj\/-\/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e\"\n+\n+is-posix-bracket@^0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-posix-bracket\/-\/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4\"\n+\n+is-primitive@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-primitive\/-\/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575\"\n+\n+is-promise@^2.1.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-promise\/-\/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa\"\n+\n+is-property@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-property\/-\/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84\"\n+\n+is-redirect@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-redirect\/-\/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24\"\n+\n+is-retry-allowed@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-retry-allowed\/-\/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34\"\n+\n+is-stream@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-stream\/-\/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44\"\n+\n+is-svg@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-svg\/-\/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9\"\n+ dependencies:\n+ html-comment-regex \"^1.1.0\"\n+\n+is-typedarray@~1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-typedarray\/-\/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a\"\n+\n+is-utf8@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/is-utf8\/-\/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72\"\n+\n+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11\"\n+\n+isarray@0.0.1:\n+ version \"0.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isarray\/-\/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf\"\n+\n+isbinaryfile@^3.0.0:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isbinaryfile\/-\/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621\"\n+\n+isexe@^1.1.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isexe\/-\/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0\"\n+\n+isobject@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isobject\/-\/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89\"\n+ dependencies:\n+ isarray \"1.0.0\"\n+\n+isstream@~0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/isstream\/-\/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a\"\n+\n+istanbul-api@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-api\/-\/istanbul-api-1.1.1.tgz#d36e2f1560d1a43ce304c4ff7338182de61c8f73\"\n+ dependencies:\n+ async \"^2.1.4\"\n+ fileset \"^2.0.2\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ istanbul-lib-hook \"^1.0.0\"\n+ istanbul-lib-instrument \"^1.3.0\"\n+ istanbul-lib-report \"^1.0.0-alpha.3\"\n+ istanbul-lib-source-maps \"^1.1.0\"\n+ istanbul-reports \"^1.0.0\"\n+ js-yaml \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ once \"^1.4.0\"\n+\n+istanbul-instrumenter-loader@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-instrumenter-loader\/-\/istanbul-instrumenter-loader-2.0.0.tgz#e5492900ab0bba835efa8024cb00be9b3eea2700\"\n+ dependencies:\n+ convert-source-map \"^1.3.0\"\n+ istanbul-lib-instrument \"^1.1.3\"\n+ loader-utils \"^0.2.16\"\n+ object-assign \"^4.1.0\"\n+\n+istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-coverage\/-\/istanbul-lib-coverage-1.0.1.tgz#f263efb519c051c5f1f3343034fc40e7b43ff212\"\n+\n+istanbul-lib-hook@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-hook\/-\/istanbul-lib-hook-1.0.0.tgz#fc5367ee27f59268e8f060b0c7aaf051d9c425c5\"\n+ dependencies:\n+ append-transform \"^0.4.0\"\n+\n+istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.3.0:\n+ version \"1.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-instrument\/-\/istanbul-lib-instrument-1.4.2.tgz#0e2fdfac93c1dabf2e31578637dc78a19089f43e\"\n+ dependencies:\n+ babel-generator \"^6.18.0\"\n+ babel-template \"^6.16.0\"\n+ babel-traverse \"^6.18.0\"\n+ babel-types \"^6.18.0\"\n+ babylon \"^6.13.0\"\n+ istanbul-lib-coverage \"^1.0.0\"\n+ semver \"^5.3.0\"\n+\n+istanbul-lib-report@^1.0.0-alpha.3:\n+ version \"1.0.0-alpha.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-report\/-\/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af\"\n+ dependencies:\n+ async \"^1.4.2\"\n+ istanbul-lib-coverage \"^1.0.0-alpha\"\n+ mkdirp \"^0.5.1\"\n+ path-parse \"^1.0.5\"\n+ rimraf \"^2.4.3\"\n+ supports-color \"^3.1.2\"\n+\n+istanbul-lib-source-maps@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-lib-source-maps\/-\/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f\"\n+ dependencies:\n+ istanbul-lib-coverage \"^1.0.0-alpha.0\"\n+ mkdirp \"^0.5.1\"\n+ rimraf \"^2.4.4\"\n+ source-map \"^0.5.3\"\n+\n+istanbul-reports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/istanbul-reports\/-\/istanbul-reports-1.0.1.tgz#9a17176bc4a6cbebdae52b2f15961d52fa623fbc\"\n+ dependencies:\n+ handlebars \"^4.0.3\"\n+\n+jasmine-core@~2.5.2:\n+ version \"2.5.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-core\/-\/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297\"\n+\n+jasmine-spec-reporter@~3.2.0:\n+ version \"3.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine-spec-reporter\/-\/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff\"\n+ dependencies:\n+ colors \"1.1.2\"\n+\n+jasmine@^2.5.3:\n+ version \"2.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasmine\/-\/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22\"\n+ dependencies:\n+ exit \"^0.1.2\"\n+ glob \"^7.0.6\"\n+ jasmine-core \"~2.5.2\"\n+\n+jasminewd2@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jasminewd2\/-\/jasminewd2-2.0.0.tgz#10aacd2c588c1ceb6a0b849f1a7f3f959f777c91\"\n+\n+jodid25519@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jodid25519\/-\/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967\"\n+ dependencies:\n+ jsbn \"~0.1.0\"\n+\n+js-base64@^2.1.5, js-base64@^2.1.9:\n+ version \"2.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-base64\/-\/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce\"\n+\n+js-tokens@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-tokens\/-\/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7\"\n+\n+js-yaml@^3.7.0:\n+ version \"3.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^3.1.1\"\n+\n+js-yaml@~3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/js-yaml\/-\/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80\"\n+ dependencies:\n+ argparse \"^1.0.7\"\n+ esprima \"^2.6.0\"\n+\n+jsbn@~0.1.0:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsbn\/-\/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513\"\n+\n+jsesc@^1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b\"\n+\n+jsesc@~0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsesc\/-\/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d\"\n+\n+json-loader@^0.5.4:\n+ version \"0.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-loader\/-\/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de\"\n+\n+json-schema@0.2.3:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-schema\/-\/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13\"\n+\n+json-stable-stringify@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stable-stringify\/-\/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af\"\n+ dependencies:\n+ jsonify \"~0.0.0\"\n+\n+json-stringify-safe@~5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json-stringify-safe\/-\/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb\"\n+\n+json3@^3.3.2, json3@3.3.2:\n+ version \"3.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json3\/-\/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1\"\n+\n+json5@^0.5.0:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/json5\/-\/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821\"\n+\n+jsonfile@^2.1.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonfile\/-\/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8\"\n+ optionalDependencies:\n+ graceful-fs \"^4.1.6\"\n+\n+jsonify@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonify\/-\/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73\"\n+\n+jsonpointer@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsonpointer\/-\/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9\"\n+\n+jsprim@^1.2.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/jsprim\/-\/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+ json-schema \"0.2.3\"\n+ verror \"1.3.6\"\n+\n+karma-chrome-launcher@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-chrome-launcher\/-\/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25\"\n+ dependencies:\n+ fs-access \"^1.0.0\"\n+ which \"^1.2.1\"\n+\n+karma-cli@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-cli\/-\/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960\"\n+ dependencies:\n+ resolve \"^1.1.6\"\n+\n+karma-coverage-istanbul-reporter@^0.2.0:\n+ version \"0.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-coverage-istanbul-reporter\/-\/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5\"\n+ dependencies:\n+ istanbul-api \"^1.1.1\"\n+\n+karma-jasmine-html-reporter@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine-html-reporter\/-\/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c\"\n+ dependencies:\n+ karma-jasmine \"^1.0.2\"\n+\n+karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-jasmine\/-\/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf\"\n+\n+karma-sourcemap-loader@^0.3.7:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-sourcemap-loader\/-\/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+\n+karma-webpack@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma-webpack\/-\/karma-webpack-2.0.2.tgz#bd38350af5645c9644090770939ebe7ce726f864\"\n+ dependencies:\n+ async \"~0.9.0\"\n+ loader-utils \"^0.2.5\"\n+ lodash \"^3.8.0\"\n+ source-map \"^0.1.41\"\n+ webpack-dev-middleware \"^1.0.11\"\n+\n+karma@~1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/karma\/-\/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e\"\n+ dependencies:\n+ bluebird \"^3.3.0\"\n+ body-parser \"^1.12.4\"\n+ chokidar \"^1.4.1\"\n+ colors \"^1.1.0\"\n+ combine-lists \"^1.0.0\"\n+ connect \"^3.3.5\"\n+ core-js \"^2.2.0\"\n+ di \"^0.0.1\"\n+ dom-serialize \"^2.2.0\"\n+ expand-braces \"^0.1.1\"\n+ glob \"^7.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ http-proxy \"^1.13.0\"\n+ isbinaryfile \"^3.0.0\"\n+ lodash \"^3.8.0\"\n+ log4js \"^0.6.31\"\n+ mime \"^1.3.4\"\n+ minimatch \"^3.0.0\"\n+ optimist \"^0.6.1\"\n+ qjobs \"^1.1.4\"\n+ range-parser \"^1.2.0\"\n+ rimraf \"^2.3.3\"\n+ safe-buffer \"^5.0.1\"\n+ socket.io \"1.7.2\"\n+ source-map \"^0.5.3\"\n+ tmp \"0.0.28\"\n+ useragent \"^2.1.10\"\n+\n+kind-of@^3.0.2:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/kind-of\/-\/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47\"\n+ dependencies:\n+ is-buffer \"^1.0.2\"\n+\n+latest-version@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/latest-version\/-\/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b\"\n+ dependencies:\n+ package-json \"^2.0.0\"\n+\n+lazy-cache@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-cache\/-\/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e\"\n+\n+lazy-req@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lazy-req\/-\/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac\"\n+\n+lcid@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lcid\/-\/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835\"\n+ dependencies:\n+ invert-kv \"^1.0.0\"\n+\n+less-loader@^2.2.3:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less-loader\/-\/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528\"\n+ dependencies:\n+ loader-utils \"^0.2.5\"\n+\n+less@^2.7.2:\n+ version \"2.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/less\/-\/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df\"\n+ optionalDependencies:\n+ errno \"^0.1.1\"\n+ graceful-fs \"^4.1.2\"\n+ image-size \"~0.5.0\"\n+ mime \"^1.2.11\"\n+ mkdirp \"^0.5.0\"\n+ promise \"^7.1.1\"\n+ request \"^2.72.0\"\n+ source-map \"^0.5.3\"\n+\n+load-json-file@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/load-json-file\/-\/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ parse-json \"^2.2.0\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+ strip-bom \"^2.0.0\"\n+\n+loader-runner@^2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-runner\/-\/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2\"\n+\n+loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.9, loader-utils@~0.2.2:\n+ version \"0.2.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+ object-assign \"^4.0.1\"\n+\n+loader-utils@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loader-utils\/-\/loader-utils-1.0.2.tgz#a9f923c865a974623391a8602d031137fad74830\"\n+ dependencies:\n+ big.js \"^3.1.3\"\n+ emojis-list \"^2.0.0\"\n+ json5 \"^0.5.0\"\n+\n+lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:\n+ version \"4.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.assign\/-\/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7\"\n+\n+lodash.camelcase@^4.3.0:\n+ version \"4.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.camelcase\/-\/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6\"\n+\n+lodash.clonedeep@^4.3.2:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.clonedeep\/-\/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef\"\n+\n+lodash.memoize@^4.1.0:\n+ version \"4.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.memoize\/-\/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe\"\n+\n+lodash.mergewith@^4.6.0:\n+ version \"4.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.mergewith\/-\/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55\"\n+\n+lodash.uniq@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash.uniq\/-\/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773\"\n+\n+lodash@^3.8.0:\n+ version \"3.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6\"\n+\n+lodash@^4.0.0, lodash@^4.11.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:\n+ version \"4.17.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae\"\n+\n+lodash@~4.16.4:\n+ version \"4.16.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lodash\/-\/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777\"\n+\n+log4js@^0.6.31:\n+ version \"0.6.38\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/log4js\/-\/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd\"\n+ dependencies:\n+ readable-stream \"~1.0.2\"\n+ semver \"~4.3.3\"\n+\n+longest@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/longest\/-\/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097\"\n+\n+loose-envify@^1.0.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loose-envify\/-\/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848\"\n+ dependencies:\n+ js-tokens \"^3.0.0\"\n+\n+loud-rejection@^1.0.0:\n+ version \"1.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/loud-rejection\/-\/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f\"\n+ dependencies:\n+ currently-unhandled \"^0.4.1\"\n+ signal-exit \"^3.0.0\"\n+\n+lower-case@^1.1.1:\n+ version \"1.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lower-case\/-\/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac\"\n+\n+lowercase-keys@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lowercase-keys\/-\/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306\"\n+\n+lru-cache@^4.0.1:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e\"\n+ dependencies:\n+ pseudomap \"^1.0.1\"\n+ yallist \"^2.0.0\"\n+\n+lru-cache@2.2.x:\n+ version \"2.2.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/lru-cache\/-\/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d\"\n+\n+macaddress@^0.2.8:\n+ version \"0.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/macaddress\/-\/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12\"\n+\n+magic-string@^0.19.0:\n+ version \"0.19.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/magic-string\/-\/magic-string-0.19.0.tgz#198948217254e3e0b93080e01146b7c73b2a06b2\"\n+ dependencies:\n+ vlq \"^0.2.1\"\n+\n+make-error@^1.1.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/make-error\/-\/make-error-1.2.2.tgz#e4e270e474f642cca20fa126fe441163957832ef\"\n+\n+map-obj@^1.0.0, map-obj@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/map-obj\/-\/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d\"\n+\n+matcher-collection@^1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/matcher-collection\/-\/matcher-collection-1.0.4.tgz#2f66ae0869996f29e43d0b62c83dd1d43e581755\"\n+ dependencies:\n+ minimatch \"^3.0.2\"\n+\n+math-expression-evaluator@^1.2.14:\n+ version \"1.2.16\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/math-expression-evaluator\/-\/math-expression-evaluator-1.2.16.tgz#b357fa1ca9faefb8e48d10c14ef2bcb2d9f0a7c9\"\n+\n+media-typer@0.3.0:\n+ version \"0.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/media-typer\/-\/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748\"\n+\n+memory-fs@^0.4.0, memory-fs@~0.4.1:\n+ version \"0.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/memory-fs\/-\/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552\"\n+ dependencies:\n+ errno \"^0.1.3\"\n+ readable-stream \"^2.0.1\"\n+\n+meow@^3.7.0:\n+ version \"3.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/meow\/-\/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb\"\n+ dependencies:\n+ camelcase-keys \"^2.0.0\"\n+ decamelize \"^1.1.2\"\n+ loud-rejection \"^1.0.0\"\n+ map-obj \"^1.0.1\"\n+ minimist \"^1.1.3\"\n+ normalize-package-data \"^2.3.4\"\n+ object-assign \"^4.0.1\"\n+ read-pkg-up \"^1.0.1\"\n+ redent \"^1.0.0\"\n+ trim-newlines \"^1.0.0\"\n+\n+merge-descriptors@1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/merge-descriptors\/-\/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61\"\n+\n+methods@~1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/methods\/-\/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee\"\n+\n+micromatch@^2.1.5, micromatch@^2.3.11:\n+ version \"2.3.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/micromatch\/-\/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565\"\n+ dependencies:\n+ arr-diff \"^2.0.0\"\n+ array-unique \"^0.2.1\"\n+ braces \"^1.8.2\"\n+ expand-brackets \"^0.1.4\"\n+ extglob \"^0.3.1\"\n+ filename-regex \"^2.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.1\"\n+ kind-of \"^3.0.2\"\n+ normalize-path \"^2.0.1\"\n+ object.omit \"^2.0.0\"\n+ parse-glob \"^3.0.4\"\n+ regex-cache \"^0.4.2\"\n+\n+miller-rabin@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/miller-rabin\/-\/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d\"\n+ dependencies:\n+ bn.js \"^4.0.0\"\n+ brorand \"^1.0.1\"\n+\n+\"mime-db@>= 1.24.0 < 2\", mime-db@~1.26.0:\n+ version \"1.26.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-db\/-\/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff\"\n+\n+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:\n+ version \"2.1.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime-types\/-\/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee\"\n+ dependencies:\n+ mime-db \"~1.26.0\"\n+\n+mime@^1.2.11, mime@^1.3.4, mime@1.3.4, mime@1.3.x:\n+ version \"1.3.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mime\/-\/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53\"\n+\n+mimic-fn@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mimic-fn\/-\/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18\"\n+\n+minimalistic-assert@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-assert\/-\/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3\"\n+\n+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimalistic-crypto-utils\/-\/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a\"\n+\n+minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, \"minimatch@2 || 3\":\n+ version \"3.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimatch\/-\/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774\"\n+ dependencies:\n+ brace-expansion \"^1.0.0\"\n+\n+minimist@^1.1.3, minimist@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284\"\n+\n+minimist@~0.0.1:\n+ version \"0.0.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf\"\n+\n+minimist@0.0.8:\n+ version \"0.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/minimist\/-\/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d\"\n+\n+mkdirp@^0.5.0, mkdirp@^0.5.1, \"mkdirp@>=0.5 0\", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mkdirp\/-\/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903\"\n+ dependencies:\n+ minimist \"0.0.8\"\n+\n+ms@0.7.1:\n+ version \"0.7.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098\"\n+\n+ms@0.7.2:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ms\/-\/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765\"\n+\n+mute-stream@0.0.7:\n+ version \"0.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/mute-stream\/-\/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab\"\n+\n+nan@^2.3.0, nan@^2.3.2:\n+ version \"2.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nan\/-\/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2\"\n+\n+ncname@1.0.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ncname\/-\/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c\"\n+ dependencies:\n+ xml-char-classes \"^1.0.0\"\n+\n+negotiator@0.6.1:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/negotiator\/-\/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9\"\n+\n+ngrx-store-freeze:\n+ version \"0.1.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ngrx-store-freeze\/-\/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81\"\n+ dependencies:\n+ deep-freeze-strict \"^1.1.1\"\n+\n+no-case@^2.2.0:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/no-case\/-\/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081\"\n+ dependencies:\n+ lower-case \"^1.1.1\"\n+\n+node-gyp@^3.3.1:\n+ version \"3.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-gyp\/-\/node-gyp-3.5.0.tgz#a8fe5e611d079ec16348a3eb960e78e11c85274a\"\n+ dependencies:\n+ fstream \"^1.0.0\"\n+ glob \"^7.0.3\"\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ mkdirp \"^0.5.0\"\n+ nopt \"2 || 3\"\n+ npmlog \"0 || 1 || 2 || 3 || 4\"\n+ osenv \"0\"\n+ request \"2\"\n+ rimraf \"2\"\n+ semver \"2.x || 3.x || 4 || 5\"\n+ tar \"^2.0.0\"\n+ which \"1\"\n+\n+node-libs-browser@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-libs-browser\/-\/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646\"\n+ dependencies:\n+ assert \"^1.1.1\"\n+ browserify-zlib \"^0.1.4\"\n+ buffer \"^4.3.0\"\n+ console-browserify \"^1.1.0\"\n+ constants-browserify \"^1.0.0\"\n+ crypto-browserify \"^3.11.0\"\n+ domain-browser \"^1.1.1\"\n+ events \"^1.0.0\"\n+ https-browserify \"0.0.1\"\n+ os-browserify \"^0.2.0\"\n+ path-browserify \"0.0.0\"\n+ process \"^0.11.0\"\n+ punycode \"^1.2.4\"\n+ querystring-es3 \"^0.2.0\"\n+ readable-stream \"^2.0.5\"\n+ stream-browserify \"^2.0.1\"\n+ stream-http \"^2.3.1\"\n+ string_decoder \"^0.10.25\"\n+ timers-browserify \"^2.0.2\"\n+ tty-browserify \"0.0.0\"\n+ url \"^0.11.0\"\n+ util \"^0.10.3\"\n+ vm-browserify \"0.0.4\"\n+\n+node-modules-path@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-modules-path\/-\/node-modules-path-1.0.1.tgz#40096b08ce7ad0ea14680863af449c7c75a5d1c8\"\n+\n+node-pre-gyp@^0.6.29:\n+ version \"0.6.33\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-pre-gyp\/-\/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9\"\n+ dependencies:\n+ mkdirp \"~0.5.1\"\n+ nopt \"~3.0.6\"\n+ npmlog \"^4.0.1\"\n+ rc \"~1.1.6\"\n+ request \"^2.79.0\"\n+ rimraf \"~2.5.4\"\n+ semver \"~5.3.0\"\n+ tar \"~2.2.1\"\n+ tar-pack \"~3.3.0\"\n+\n+node-sass@^4.3.0:\n+ version \"4.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-sass\/-\/node-sass-4.5.0.tgz#532e37bad0ce587348c831535dbc98ea4289508b\"\n+ dependencies:\n+ async-foreach \"^0.1.3\"\n+ chalk \"^1.1.1\"\n+ cross-spawn \"^3.0.0\"\n+ gaze \"^1.0.0\"\n+ get-stdin \"^4.0.1\"\n+ glob \"^7.0.3\"\n+ in-publish \"^2.0.0\"\n+ lodash.assign \"^4.2.0\"\n+ lodash.clonedeep \"^4.3.2\"\n+ lodash.mergewith \"^4.6.0\"\n+ meow \"^3.7.0\"\n+ mkdirp \"^0.5.1\"\n+ nan \"^2.3.2\"\n+ node-gyp \"^3.3.1\"\n+ npmlog \"^4.0.0\"\n+ request \"^2.61.0\"\n+ sass-graph \"^2.1.1\"\n+ stdout-stream \"^1.4.0\"\n+\n+node-status-codes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/node-status-codes\/-\/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f\"\n+\n+nopt@^4.0.1:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d\"\n+ dependencies:\n+ abbrev \"1\"\n+ osenv \"^0.1.4\"\n+\n+nopt@~3.0.6, \"nopt@2 || 3\":\n+ version \"3.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nopt\/-\/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9\"\n+ dependencies:\n+ abbrev \"1\"\n+\n+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:\n+ version \"2.3.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-package-data\/-\/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df\"\n+ dependencies:\n+ hosted-git-info \"^2.1.4\"\n+ is-builtin-module \"^1.0.0\"\n+ semver \"2 || 3 || 4 || 5\"\n+ validate-npm-package-license \"^3.0.1\"\n+\n+normalize-path@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-path\/-\/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a\"\n+\n+normalize-range@^0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-range\/-\/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942\"\n+\n+normalize-url@^1.4.0:\n+ version \"1.9.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/normalize-url\/-\/normalize-url-1.9.0.tgz#c2bb50035edee62cd81edb2d45da68dc25e3423e\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ prepend-http \"^1.0.0\"\n+ query-string \"^4.1.0\"\n+ sort-keys \"^1.0.0\"\n+\n+npmlog@^4.0.0, npmlog@^4.0.1, \"npmlog@0 || 1 || 2 || 3 || 4\":\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/npmlog\/-\/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f\"\n+ dependencies:\n+ are-we-there-yet \"~1.1.2\"\n+ console-control-strings \"~1.1.0\"\n+ gauge \"~2.7.1\"\n+ set-blocking \"~2.0.0\"\n+\n+nth-check@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/nth-check\/-\/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4\"\n+ dependencies:\n+ boolbase \"~1.0.0\"\n+\n+null-check@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/null-check\/-\/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd\"\n+\n+num2fraction@^1.2.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/num2fraction\/-\/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede\"\n+\n+number-is-nan@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/number-is-nan\/-\/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d\"\n+\n+oauth-sign@~0.8.1:\n+ version \"0.8.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/oauth-sign\/-\/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43\"\n+\n+object-assign@^4.0.1, object-assign@^4.1.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863\"\n+\n+object-assign@4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-assign\/-\/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0\"\n+\n+object-component@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object-component\/-\/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291\"\n+\n+object.omit@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/object.omit\/-\/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa\"\n+ dependencies:\n+ for-own \"^0.1.4\"\n+ is-extendable \"^0.1.1\"\n+\n+obuf@^1.0.0, obuf@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/obuf\/-\/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e\"\n+\n+on-finished@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-finished\/-\/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947\"\n+ dependencies:\n+ ee-first \"1.1.1\"\n+\n+on-headers@~1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/on-headers\/-\/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7\"\n+\n+once@^1.3.0, once@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+once@~1.3.3:\n+ version \"1.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/once\/-\/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20\"\n+ dependencies:\n+ wrappy \"1\"\n+\n+onetime@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/onetime\/-\/onetime-2.0.0.tgz#52aa8110e52fc5126ffc667bd8ec21c2ed209ce6\"\n+ dependencies:\n+ mimic-fn \"^1.0.0\"\n+\n+opn@4.0.2:\n+ version \"4.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/opn\/-\/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ pinkie-promise \"^2.0.0\"\n+\n+optimist@^0.6.1, optimist@~0.6.0:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686\"\n+ dependencies:\n+ minimist \"~0.0.1\"\n+ wordwrap \"~0.0.2\"\n+\n+optimist@~0.3, optimist@~0.3.5:\n+ version \"0.3.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/optimist\/-\/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9\"\n+ dependencies:\n+ wordwrap \"~0.0.2\"\n+\n+options@>=0.0.5:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/options\/-\/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f\"\n+\n+original@>=0.0.5:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/original\/-\/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b\"\n+ dependencies:\n+ url-parse \"1.0.x\"\n+\n+os-browserify@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-browserify\/-\/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f\"\n+\n+os-homedir@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-homedir\/-\/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3\"\n+\n+os-locale@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-locale\/-\/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9\"\n+ dependencies:\n+ lcid \"^1.0.0\"\n+\n+os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/os-tmpdir\/-\/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274\"\n+\n+osenv@^0.1.0, osenv@^0.1.4, osenv@0:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/osenv\/-\/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+ os-tmpdir \"^1.0.0\"\n+\n+package-json@^2.0.0:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/package-json\/-\/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb\"\n+ dependencies:\n+ got \"^5.0.0\"\n+ registry-auth-token \"^3.0.1\"\n+ registry-url \"^3.0.3\"\n+ semver \"^5.1.0\"\n+\n+pako@~0.2.0:\n+ version \"0.2.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pako\/-\/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75\"\n+\n+param-case@2.1.x:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/param-case\/-\/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a\"\n+ dependencies:\n+ no-case \"^2.2.0\"\n+\n+parse-asn1@^5.0.0:\n+ version \"5.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-asn1\/-\/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23\"\n+ dependencies:\n+ asn1.js \"^4.0.0\"\n+ browserify-aes \"^1.0.0\"\n+ create-hash \"^1.1.0\"\n+ evp_bytestokey \"^1.0.0\"\n+ pbkdf2 \"^3.0.3\"\n+\n+parse-glob@^3.0.4:\n+ version \"3.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-glob\/-\/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c\"\n+ dependencies:\n+ glob-base \"^0.3.0\"\n+ is-dotfile \"^1.0.0\"\n+ is-extglob \"^1.0.0\"\n+ is-glob \"^2.0.0\"\n+\n+parse-json@^2.1.0, parse-json@^2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parse-json\/-\/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9\"\n+ dependencies:\n+ error-ex \"^1.2.0\"\n+\n+parsejson@0.0.3:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parsejson\/-\/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseqs@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseqs\/-\/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseuri@0.0.5:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseuri\/-\/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a\"\n+ dependencies:\n+ better-assert \"~1.0.0\"\n+\n+parseurl@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/parseurl\/-\/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56\"\n+\n+path-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-browserify\/-\/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a\"\n+\n+path-exists@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-exists\/-\/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+\n+path-is-absolute@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-absolute\/-\/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f\"\n+\n+path-is-inside@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-is-inside\/-\/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53\"\n+\n+path-parse@^1.0.5:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-parse\/-\/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1\"\n+\n+path-to-regexp@0.1.7:\n+ version \"0.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-to-regexp\/-\/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c\"\n+\n+path-type@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/path-type\/-\/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ pify \"^2.0.0\"\n+ pinkie-promise \"^2.0.0\"\n+\n+pbkdf2@^3.0.3:\n+ version \"3.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pbkdf2\/-\/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693\"\n+ dependencies:\n+ create-hmac \"^1.1.2\"\n+\n+pify@^2.0.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pify\/-\/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c\"\n+\n+pinkie-promise@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie-promise\/-\/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa\"\n+ dependencies:\n+ pinkie \"^2.0.0\"\n+\n+pinkie@^2.0.0, pinkie@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pinkie\/-\/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870\"\n+\n+portfinder@^1.0.9, portfinder@~1.0.12:\n+ version \"1.0.13\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/portfinder\/-\/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9\"\n+ dependencies:\n+ async \"^1.5.2\"\n+ debug \"^2.2.0\"\n+ mkdirp \"0.5.x\"\n+\n+postcss-calc@^5.2.0:\n+ version \"5.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-calc\/-\/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e\"\n+ dependencies:\n+ postcss \"^5.0.2\"\n+ postcss-message-helpers \"^2.0.0\"\n+ reduce-css-calc \"^1.2.6\"\n+\n+postcss-colormin@^2.1.8:\n+ version \"2.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-colormin\/-\/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b\"\n+ dependencies:\n+ colormin \"^1.0.5\"\n+ postcss \"^5.0.13\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-convert-values@^2.3.4:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-convert-values\/-\/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d\"\n+ dependencies:\n+ postcss \"^5.0.11\"\n+ postcss-value-parser \"^3.1.2\"\n+\n+postcss-discard-comments@^2.0.4:\n+ version \"2.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-comments\/-\/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-duplicates@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-duplicates\/-\/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-discard-empty@^2.0.1:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-empty\/-\/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+\n+postcss-discard-overridden@^0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-overridden\/-\/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58\"\n+ dependencies:\n+ postcss \"^5.0.16\"\n+\n+postcss-discard-unused@^2.2.1:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-discard-unused\/-\/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433\"\n+ dependencies:\n+ postcss \"^5.0.14\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-filter-plugins@^2.0.0:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-filter-plugins\/-\/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ uniqid \"^4.0.0\"\n+\n+postcss-loader@^0.13.0:\n+ version \"0.13.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-loader\/-\/postcss-loader-0.13.0.tgz#72fdaf0d29444df77d3751ce4e69dc40bc99ed85\"\n+ dependencies:\n+ loader-utils \"^0.2.15\"\n+ postcss \"^5.2.0\"\n+\n+postcss-merge-idents@^2.1.5:\n+ version \"2.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-idents\/-\/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.10\"\n+ postcss-value-parser \"^3.1.1\"\n+\n+postcss-merge-longhand@^2.0.1:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-longhand\/-\/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-merge-rules@^2.0.3:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-merge-rules\/-\/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721\"\n+ dependencies:\n+ browserslist \"^1.5.2\"\n+ caniuse-api \"^1.5.2\"\n+ postcss \"^5.0.4\"\n+ postcss-selector-parser \"^2.2.2\"\n+ vendors \"^1.0.0\"\n+\n+postcss-message-helpers@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-message-helpers\/-\/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e\"\n+\n+postcss-minify-font-values@^1.0.2:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-font-values\/-\/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69\"\n+ dependencies:\n+ object-assign \"^4.0.1\"\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-minify-gradients@^1.0.1:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-gradients\/-\/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1\"\n+ dependencies:\n+ postcss \"^5.0.12\"\n+ postcss-value-parser \"^3.3.0\"\n+\n+postcss-minify-params@^1.0.4:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-params\/-\/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.2\"\n+ postcss-value-parser \"^3.0.2\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-minify-selectors@^2.0.4:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-minify-selectors\/-\/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf\"\n+ dependencies:\n+ alphanum-sort \"^1.0.2\"\n+ has \"^1.0.1\"\n+ postcss \"^5.0.14\"\n+ postcss-selector-parser \"^2.0.0\"\n+\n+postcss-modules-extract-imports@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-extract-imports\/-\/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-local-by-default@^1.0.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-local-by-default\/-\/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-scope@^1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-scope\/-\/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29\"\n+ dependencies:\n+ css-selector-tokenizer \"^0.6.0\"\n+ postcss \"^5.0.4\"\n+\n+postcss-modules-values@^1.1.0:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-modules-values\/-\/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1\"\n+ dependencies:\n+ icss-replace-symbols \"^1.0.2\"\n+ postcss \"^5.0.14\"\n+\n+postcss-normalize-charset@^1.1.0:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-charset\/-\/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1\"\n+ dependencies:\n+ postcss \"^5.0.5\"\n+\n+postcss-normalize-url@^3.0.7:\n+ version \"3.0.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-normalize-url\/-\/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222\"\n+ dependencies:\n+ is-absolute-url \"^2.0.0\"\n+ normalize-url \"^1.4.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+\n+postcss-ordered-values@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-ordered-values\/-\/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-reduce-idents@^2.2.2:\n+ version \"2.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-idents\/-\/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+ postcss-value-parser \"^3.0.2\"\n+\n+postcss-reduce-initial@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-initial\/-\/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea\"\n+ dependencies:\n+ postcss \"^5.0.4\"\n+\n+postcss-reduce-transforms@^1.0.3:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-reduce-transforms\/-\/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.8\"\n+ postcss-value-parser \"^3.0.1\"\n+\n+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-selector-parser\/-\/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90\"\n+ dependencies:\n+ flatten \"^1.0.2\"\n+ indexes-of \"^1.0.1\"\n+ uniq \"^1.0.1\"\n+\n+postcss-svgo@^2.1.1:\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-svgo\/-\/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d\"\n+ dependencies:\n+ is-svg \"^2.0.0\"\n+ postcss \"^5.0.14\"\n+ postcss-value-parser \"^3.2.3\"\n+ svgo \"^0.7.0\"\n+\n+postcss-unique-selectors@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-unique-selectors\/-\/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d\"\n+ dependencies:\n+ alphanum-sort \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss-url@^5.1.2:\n+ version \"5.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-url\/-\/postcss-url-5.1.2.tgz#98b3165be8d592471cb0caadde2c0d1f832f133e\"\n+ dependencies:\n+ directory-encoder \"^0.7.2\"\n+ js-base64 \"^2.1.5\"\n+ mime \"^1.2.11\"\n+ minimatch \"^3.0.0\"\n+ mkdirp \"^0.5.0\"\n+ path-is-absolute \"^1.0.0\"\n+ postcss \"^5.0.0\"\n+\n+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-value-parser\/-\/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15\"\n+\n+postcss-zindex@^2.0.1:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss-zindex\/-\/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22\"\n+ dependencies:\n+ has \"^1.0.1\"\n+ postcss \"^5.0.4\"\n+ uniqs \"^2.0.0\"\n+\n+postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.0, postcss@^5.2.15:\n+ version \"5.2.15\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/postcss\/-\/postcss-5.2.15.tgz#a9e8685e50e06cc5b3fdea5297273246c26f5b30\"\n+ dependencies:\n+ chalk \"^1.1.3\"\n+ js-base64 \"^2.1.9\"\n+ source-map \"^0.5.6\"\n+ supports-color \"^3.2.3\"\n+\n+prepend-http@^1.0.0, prepend-http@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prepend-http\/-\/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc\"\n+\n+preserve@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/preserve\/-\/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b\"\n+\n+pretty-error@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pretty-error\/-\/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23\"\n+ dependencies:\n+ renderkid \"~2.0.0\"\n+ utila \"~0.4\"\n+\n+process-nextick-args@~1.0.6:\n+ version \"1.0.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process-nextick-args\/-\/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3\"\n+\n+process@^0.11.0:\n+ version \"0.11.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/process\/-\/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1\"\n+\n+promise@^7.1.1:\n+ version \"7.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/promise\/-\/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf\"\n+ dependencies:\n+ asap \"~2.0.3\"\n+\n+protractor@~5.1.0:\n+ version \"5.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/protractor\/-\/protractor-5.1.1.tgz#10c4e336571b28875b8acc3ae3e4e1e40ef7e986\"\n+ dependencies:\n+ \"@types\/node\" \"^6.0.46\"\n+ \"@types\/q\" \"^0.0.32\"\n+ \"@types\/selenium-webdriver\" \"~2.53.39\"\n+ blocking-proxy \"0.0.5\"\n+ chalk \"^1.1.3\"\n+ glob \"^7.0.3\"\n+ jasmine \"^2.5.3\"\n+ jasminewd2 \"^2.0.0\"\n+ optimist \"~0.6.0\"\n+ q \"1.4.1\"\n+ saucelabs \"~1.3.0\"\n+ selenium-webdriver \"3.0.1\"\n+ source-map-support \"~0.4.0\"\n+ webdriver-js-extender \"^1.0.0\"\n+ webdriver-manager \"^12.0.1\"\n+\n+proxy-addr@~1.1.3:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/proxy-addr\/-\/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074\"\n+ dependencies:\n+ forwarded \"~0.1.0\"\n+ ipaddr.js \"1.2.0\"\n+\n+prr@~0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/prr\/-\/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a\"\n+\n+pseudomap@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/pseudomap\/-\/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3\"\n+\n+public-encrypt@^4.0.0:\n+ version \"4.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/public-encrypt\/-\/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6\"\n+ dependencies:\n+ bn.js \"^4.1.0\"\n+ browserify-rsa \"^4.0.0\"\n+ create-hash \"^1.1.0\"\n+ parse-asn1 \"^5.0.0\"\n+ randombytes \"^2.0.1\"\n+\n+punycode@^1.2.4, punycode@^1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e\"\n+\n+punycode@1.3.2:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/punycode\/-\/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d\"\n+\n+q@^1.1.2, q@^1.4.1, q@1.4.1:\n+ version \"1.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/q\/-\/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e\"\n+\n+qjobs@^1.1.4:\n+ version \"1.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qjobs\/-\/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73\"\n+\n+qs@~6.3.0, qs@6.3.1:\n+ version \"6.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/qs\/-\/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d\"\n+\n+query-string@^4.1.0:\n+ version \"4.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/query-string\/-\/query-string-4.3.2.tgz#ec0fd765f58a50031a3968c2431386f8947a5cdd\"\n+ dependencies:\n+ object-assign \"^4.1.0\"\n+ strict-uri-encode \"^1.0.0\"\n+\n+querystring-es3@^0.2.0:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring-es3\/-\/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73\"\n+\n+querystring@0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystring\/-\/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620\"\n+\n+querystringify@0.0.x:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/querystringify\/-\/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c\"\n+\n+randomatic@^1.1.3:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randomatic\/-\/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb\"\n+ dependencies:\n+ is-number \"^2.0.2\"\n+ kind-of \"^3.0.2\"\n+\n+randombytes@^2.0.0, randombytes@^2.0.1:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/randombytes\/-\/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec\"\n+\n+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/range-parser\/-\/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e\"\n+\n+raw-body@~2.2.0:\n+ version \"2.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-body\/-\/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96\"\n+ dependencies:\n+ bytes \"2.4.0\"\n+ iconv-lite \"0.4.15\"\n+ unpipe \"1.0.0\"\n+\n+raw-loader@^0.5.1, raw-loader@~0.5.1:\n+ version \"0.5.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/raw-loader\/-\/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa\"\n+\n+rc@^1.0.1, rc@^1.1.6, rc@~1.1.6:\n+ version \"1.1.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rc\/-\/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea\"\n+ dependencies:\n+ deep-extend \"~0.4.0\"\n+ ini \"~1.3.0\"\n+ minimist \"^1.2.0\"\n+ strip-json-comments \"~2.0.1\"\n+\n+read-all-stream@^3.0.0:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-all-stream\/-\/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa\"\n+ dependencies:\n+ pinkie-promise \"^2.0.0\"\n+ readable-stream \"^2.0.0\"\n+\n+read-pkg-up@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg-up\/-\/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02\"\n+ dependencies:\n+ find-up \"^1.0.0\"\n+ read-pkg \"^1.0.0\"\n+\n+read-pkg@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/read-pkg\/-\/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28\"\n+ dependencies:\n+ load-json-file \"^1.0.0\"\n+ normalize-package-data \"^2.3.2\"\n+ path-type \"^1.0.0\"\n+\n+readable-stream@^2.0.0, \"readable-stream@^2.0.0 || ^1.1.13\", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0:\n+ version \"2.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readable-stream@~1.0.2, readable-stream@1.0:\n+ version \"1.0.34\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c\"\n+ dependencies:\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"0.0.1\"\n+ string_decoder \"~0.10.x\"\n+\n+readable-stream@~2.1.4:\n+ version \"2.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readable-stream\/-\/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0\"\n+ dependencies:\n+ buffer-shims \"^1.0.0\"\n+ core-util-is \"~1.0.0\"\n+ inherits \"~2.0.1\"\n+ isarray \"~1.0.0\"\n+ process-nextick-args \"~1.0.6\"\n+ string_decoder \"~0.10.x\"\n+ util-deprecate \"~1.0.1\"\n+\n+readdirp@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/readdirp\/-\/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78\"\n+ dependencies:\n+ graceful-fs \"^4.1.2\"\n+ minimatch \"^3.0.2\"\n+ readable-stream \"^2.0.2\"\n+ set-immediate-shim \"^1.0.1\"\n+\n+redent@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/redent\/-\/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde\"\n+ dependencies:\n+ indent-string \"^2.1.0\"\n+ strip-indent \"^1.0.1\"\n+\n+reduce-css-calc@^1.2.6:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-css-calc\/-\/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+ math-expression-evaluator \"^1.2.14\"\n+ reduce-function-call \"^1.0.1\"\n+\n+reduce-function-call@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reduce-function-call\/-\/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99\"\n+ dependencies:\n+ balanced-match \"^0.4.2\"\n+\n+reflect-metadata@^0.1.2:\n+ version \"0.1.10\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/reflect-metadata\/-\/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a\"\n+\n+regenerate@^1.2.1:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerate\/-\/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260\"\n+\n+regenerator-runtime@^0.10.0:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regenerator-runtime\/-\/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e\"\n+\n+regex-cache@^0.4.2:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regex-cache\/-\/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145\"\n+ dependencies:\n+ is-equal-shallow \"^0.1.3\"\n+ is-primitive \"^2.0.0\"\n+\n+regexpu-core@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regexpu-core\/-\/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b\"\n+ dependencies:\n+ regenerate \"^1.2.1\"\n+ regjsgen \"^0.2.0\"\n+ regjsparser \"^0.1.4\"\n+\n+registry-auth-token@^3.0.1:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-auth-token\/-\/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b\"\n+ dependencies:\n+ rc \"^1.1.6\"\n+\n+registry-url@^3.0.3:\n+ version \"3.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/registry-url\/-\/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942\"\n+ dependencies:\n+ rc \"^1.0.1\"\n+\n+regjsgen@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsgen\/-\/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7\"\n+\n+regjsparser@^0.1.4:\n+ version \"0.1.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/regjsparser\/-\/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c\"\n+ dependencies:\n+ jsesc \"~0.5.0\"\n+\n+relateurl@0.2.x:\n+ version \"0.2.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/relateurl\/-\/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9\"\n+\n+renderkid@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/renderkid\/-\/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85\"\n+ dependencies:\n+ css-select \"^1.1.0\"\n+ dom-converter \"~0.1\"\n+ htmlparser2 \"~3.3.0\"\n+ strip-ansi \"^3.0.0\"\n+ utila \"~0.3\"\n+\n+repeat-element@^1.1.2:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-element\/-\/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a\"\n+\n+repeat-string@^0.2.2:\n+ version \"0.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae\"\n+\n+repeat-string@^1.5.2:\n+ version \"1.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeat-string\/-\/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637\"\n+\n+repeating@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/repeating\/-\/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda\"\n+ dependencies:\n+ is-finite \"^1.0.0\"\n+\n+request@^2.61.0, request@^2.72.0, request@^2.78.0, request@^2.79.0, request@2:\n+ version \"2.79.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/request\/-\/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de\"\n+ dependencies:\n+ aws-sign2 \"~0.6.0\"\n+ aws4 \"^1.2.1\"\n+ caseless \"~0.11.0\"\n+ combined-stream \"~1.0.5\"\n+ extend \"~3.0.0\"\n+ forever-agent \"~0.6.1\"\n+ form-data \"~2.1.1\"\n+ har-validator \"~2.0.6\"\n+ hawk \"~3.1.3\"\n+ http-signature \"~1.1.0\"\n+ is-typedarray \"~1.0.0\"\n+ isstream \"~0.1.2\"\n+ json-stringify-safe \"~5.0.1\"\n+ mime-types \"~2.1.7\"\n+ oauth-sign \"~0.8.1\"\n+ qs \"~6.3.0\"\n+ stringstream \"~0.0.4\"\n+ tough-cookie \"~2.3.0\"\n+ tunnel-agent \"~0.4.1\"\n+ uuid \"^3.0.0\"\n+\n+require-directory@^2.1.1:\n+ version \"2.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-directory\/-\/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42\"\n+\n+require-main-filename@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/require-main-filename\/-\/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1\"\n+\n+requires-port@1.0.x, requires-port@1.x.x:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/requires-port\/-\/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff\"\n+\n+resolve@^1.1.6, resolve@^1.1.7:\n+ version \"1.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/resolve\/-\/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235\"\n+ dependencies:\n+ path-parse \"^1.0.5\"\n+\n+restore-cursor@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/restore-cursor\/-\/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf\"\n+ dependencies:\n+ onetime \"^2.0.0\"\n+ signal-exit \"^3.0.2\"\n+\n+right-align@^0.1.1:\n+ version \"0.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/right-align\/-\/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef\"\n+ dependencies:\n+ align-text \"^0.1.1\"\n+\n+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@2:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+rimraf@~2.2.6:\n+ version \"2.2.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582\"\n+\n+rimraf@~2.5.1, rimraf@~2.5.4:\n+ version \"2.5.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rimraf\/-\/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04\"\n+ dependencies:\n+ glob \"^7.0.5\"\n+\n+ripemd160@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ripemd160\/-\/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e\"\n+\n+rsvp@^3.0.17:\n+ version \"3.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rsvp\/-\/rsvp-3.3.3.tgz#34633caaf8bc66ceff4be3c2e1dffd032538a813\"\n+\n+run-async@^2.2.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/run-async\/-\/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0\"\n+ dependencies:\n+ is-promise \"^2.1.0\"\n+\n+rx@^4.1.0:\n+ version \"4.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rx\/-\/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782\"\n+\n+rxjs@^5.0.1, rxjs@^5.1.0:\n+ version \"5.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/rxjs\/-\/rxjs-5.2.0.tgz#db537de8767c05fa73721587a29e0085307d318b\"\n+ dependencies:\n+ symbol-observable \"^1.0.1\"\n+\n+safe-buffer@^5.0.1:\n+ version \"5.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/safe-buffer\/-\/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7\"\n+\n+sass-graph@^2.1.1:\n+ version \"2.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-graph\/-\/sass-graph-2.1.2.tgz#965104be23e8103cb7e5f710df65935b317da57b\"\n+ dependencies:\n+ glob \"^7.0.0\"\n+ lodash \"^4.0.0\"\n+ yargs \"^4.7.1\"\n+\n+sass-loader@^4.1.1:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sass-loader\/-\/sass-loader-4.1.1.tgz#79ef9468cf0bf646c29529e1f2cba6bd6e51c7bc\"\n+ dependencies:\n+ async \"^2.0.1\"\n+ loader-utils \"^0.2.15\"\n+ object-assign \"^4.1.0\"\n+\n+saucelabs@~1.3.0:\n+ version \"1.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/saucelabs\/-\/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee\"\n+ dependencies:\n+ https-proxy-agent \"^1.0.0\"\n+\n+sax@>=0.6.0, sax@~1.2.1:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-1.2.2.tgz#fd8631a23bc7826bef5d871bdb87378c95647828\"\n+\n+sax@0.5.x:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1\"\n+\n+sax@0.6.x:\n+ version \"0.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sax\/-\/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9\"\n+\n+script-loader@^0.7.0:\n+ version \"0.7.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/script-loader\/-\/script-loader-0.7.0.tgz#685dc7e7069e0dee7a92674f0ebc5b0f55baa5ec\"\n+ dependencies:\n+ raw-loader \"~0.5.1\"\n+\n+select-hose@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/select-hose\/-\/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca\"\n+\n+selenium-webdriver@^2.53.2:\n+ version \"2.53.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085\"\n+ dependencies:\n+ adm-zip \"0.4.4\"\n+ rimraf \"^2.2.8\"\n+ tmp \"0.0.24\"\n+ ws \"^1.0.1\"\n+ xml2js \"0.4.4\"\n+\n+selenium-webdriver@3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/selenium-webdriver\/-\/selenium-webdriver-3.0.1.tgz#a2dea5da4a97f6672e89e7ca7276cefa365147a7\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ rimraf \"^2.5.4\"\n+ tmp \"0.0.30\"\n+ xml2js \"^0.4.17\"\n+\n+semver-diff@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-diff\/-\/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36\"\n+ dependencies:\n+ semver \"^5.0.3\"\n+\n+semver-dsl@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver-dsl\/-\/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0\"\n+ dependencies:\n+ semver \"^5.3.0\"\n+\n+semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, \"semver@2 || 3 || 4 || 5\", \"semver@2.x || 3.x || 4 || 5\":\n+ version \"5.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f\"\n+\n+semver@~4.3.3:\n+ version \"4.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da\"\n+\n+semver@~5.0.1:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/semver\/-\/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a\"\n+\n+send@0.15.0:\n+ version \"0.15.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/send\/-\/send-0.15.0.tgz#f0185d6466fa76424b866f3d533e2d19dd0aaa39\"\n+ dependencies:\n+ debug \"2.6.1\"\n+ depd \"~1.1.0\"\n+ destroy \"~1.0.4\"\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ etag \"~1.8.0\"\n+ fresh \"0.5.0\"\n+ http-errors \"~1.6.1\"\n+ mime \"1.3.4\"\n+ ms \"0.7.2\"\n+ on-finished \"~2.3.0\"\n+ range-parser \"~1.2.0\"\n+ statuses \"~1.3.1\"\n+\n+serve-index@^1.7.2:\n+ version \"1.8.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-index\/-\/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b\"\n+ dependencies:\n+ accepts \"~1.3.3\"\n+ batch \"0.5.3\"\n+ debug \"~2.2.0\"\n+ escape-html \"~1.0.3\"\n+ http-errors \"~1.5.0\"\n+ mime-types \"~2.1.11\"\n+ parseurl \"~1.3.1\"\n+\n+serve-static@1.12.0:\n+ version \"1.12.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/serve-static\/-\/serve-static-1.12.0.tgz#150eb8aa262c2dd1924e960373145446c069dad6\"\n+ dependencies:\n+ encodeurl \"~1.0.1\"\n+ escape-html \"~1.0.3\"\n+ parseurl \"~1.3.1\"\n+ send \"0.15.0\"\n+\n+set-blocking@^2.0.0, set-blocking@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-blocking\/-\/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7\"\n+\n+set-immediate-shim@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/set-immediate-shim\/-\/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61\"\n+\n+setimmediate@^1.0.4:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setimmediate\/-\/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285\"\n+\n+setprototypeof@1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08\"\n+\n+setprototypeof@1.0.3:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/setprototypeof\/-\/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04\"\n+\n+sha.js@^2.3.6:\n+ version \"2.4.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sha.js\/-\/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f\"\n+ dependencies:\n+ inherits \"^2.0.1\"\n+\n+signal-exit@^3.0.0, signal-exit@^3.0.2:\n+ version \"3.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/signal-exit\/-\/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d\"\n+\n+silent-error@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/silent-error\/-\/silent-error-1.0.1.tgz#71b7d503d1c6f94882b51b56be879b113cb4822c\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+\n+slide@^1.1.5:\n+ version \"1.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/slide\/-\/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707\"\n+\n+sntp@1.x.x:\n+ version \"1.0.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sntp\/-\/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198\"\n+ dependencies:\n+ hoek \"2.x.x\"\n+\n+socket.io-adapter@0.5.0:\n+ version \"0.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-adapter\/-\/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ socket.io-parser \"2.3.1\"\n+\n+socket.io-client@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-client\/-\/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644\"\n+ dependencies:\n+ backo2 \"1.0.2\"\n+ component-bind \"1.0.0\"\n+ component-emitter \"1.2.1\"\n+ debug \"2.3.3\"\n+ engine.io-client \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ indexof \"0.0.1\"\n+ object-component \"0.0.3\"\n+ parseuri \"0.0.5\"\n+ socket.io-parser \"2.3.1\"\n+ to-array \"0.1.4\"\n+\n+socket.io-parser@2.3.1:\n+ version \"2.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io-parser\/-\/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0\"\n+ dependencies:\n+ component-emitter \"1.1.2\"\n+ debug \"2.2.0\"\n+ isarray \"0.0.1\"\n+ json3 \"3.3.2\"\n+\n+socket.io@1.7.2:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/socket.io\/-\/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71\"\n+ dependencies:\n+ debug \"2.3.3\"\n+ engine.io \"1.8.2\"\n+ has-binary \"0.1.7\"\n+ object-assign \"4.1.0\"\n+ socket.io-adapter \"0.5.0\"\n+ socket.io-client \"1.7.2\"\n+ socket.io-parser \"2.3.1\"\n+\n+sockjs-client@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs-client\/-\/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ eventsource \"~0.1.6\"\n+ faye-websocket \"~0.11.0\"\n+ inherits \"^2.0.1\"\n+ json3 \"^3.3.2\"\n+ url-parse \"^1.1.1\"\n+\n+sockjs@0.3.18:\n+ version \"0.3.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sockjs\/-\/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207\"\n+ dependencies:\n+ faye-websocket \"^0.10.0\"\n+ uuid \"^2.0.2\"\n+\n+sort-keys@^1.0.0:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sort-keys\/-\/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad\"\n+ dependencies:\n+ is-plain-obj \"^1.0.0\"\n+\n+source-list-map@^0.1.7, source-list-map@~0.1.7:\n+ version \"0.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-list-map\/-\/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106\"\n+\n+source-map-loader@^0.1.5:\n+ version \"0.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-loader\/-\/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91\"\n+ dependencies:\n+ async \"^0.9.0\"\n+ loader-utils \"~0.2.2\"\n+ source-map \"~0.1.33\"\n+\n+source-map-support@^0.4.0, source-map-support@^0.4.2, source-map-support@~0.4.0:\n+ version \"0.4.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map-support\/-\/source-map-support-0.4.11.tgz#647f939978b38535909530885303daf23279f322\"\n+ dependencies:\n+ source-map \"^0.5.3\"\n+\n+source-map@^0.1.41, source-map@~0.1.33, source-map@~0.1.7, source-map@0.1.x:\n+ version \"0.1.43\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b\"\n+ dependencies:\n+ amdefine \">=0.0.4\"\n+\n+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@0.5.x:\n+ version \"0.5.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/source-map\/-\/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412\"\n+\n+spdx-correct@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-correct\/-\/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40\"\n+ dependencies:\n+ spdx-license-ids \"^1.0.2\"\n+\n+spdx-expression-parse@~1.0.0:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-expression-parse\/-\/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c\"\n+\n+spdx-license-ids@^1.0.2:\n+ version \"1.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdx-license-ids\/-\/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57\"\n+\n+spdy-transport@^2.0.15:\n+ version \"2.0.18\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy-transport\/-\/spdy-transport-2.0.18.tgz#43fc9c56be2cccc12bb3e2754aa971154e836ea6\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ hpack.js \"^2.1.6\"\n+ obuf \"^1.1.0\"\n+ readable-stream \"^2.0.1\"\n+ wbuf \"^1.4.0\"\n+\n+spdy@^3.4.1:\n+ version \"3.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/spdy\/-\/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819\"\n+ dependencies:\n+ debug \"^2.2.0\"\n+ handle-thing \"^1.2.4\"\n+ http-deceiver \"^1.2.4\"\n+ select-hose \"^2.0.0\"\n+ spdy-transport \"^2.0.15\"\n+\n+sprintf-js@^1.0.3, sprintf-js@~1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sprintf-js\/-\/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c\"\n+\n+sshpk@^1.7.0:\n+ version \"1.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/sshpk\/-\/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77\"\n+ dependencies:\n+ asn1 \"~0.2.3\"\n+ assert-plus \"^1.0.0\"\n+ dashdash \"^1.12.0\"\n+ getpass \"^0.1.1\"\n+ optionalDependencies:\n+ bcrypt-pbkdf \"^1.0.0\"\n+ ecc-jsbn \"~0.1.1\"\n+ jodid25519 \"^1.0.0\"\n+ jsbn \"~0.1.0\"\n+ tweetnacl \"~0.14.0\"\n+\n+\"statuses@>= 1.3.1 < 2\", statuses@~1.3.1:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/statuses\/-\/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e\"\n+\n+stdout-stream@^1.4.0:\n+ version \"1.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stdout-stream\/-\/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b\"\n+ dependencies:\n+ readable-stream \"^2.0.1\"\n+\n+stream-browserify@^2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-browserify\/-\/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db\"\n+ dependencies:\n+ inherits \"~2.0.1\"\n+ readable-stream \"^2.0.2\"\n+\n+stream-http@^2.3.1:\n+ version \"2.6.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stream-http\/-\/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3\"\n+ dependencies:\n+ builtin-status-codes \"^3.0.0\"\n+ inherits \"^2.0.1\"\n+ readable-stream \"^2.1.0\"\n+ to-arraybuffer \"^1.0.0\"\n+ xtend \"^4.0.0\"\n+\n+strict-uri-encode@^1.0.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strict-uri-encode\/-\/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713\"\n+\n+string_decoder@^0.10.25, string_decoder@~0.10.x:\n+ version \"0.10.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string_decoder\/-\/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94\"\n+\n+string-width@^1.0.1, string-width@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3\"\n+ dependencies:\n+ code-point-at \"^1.0.0\"\n+ is-fullwidth-code-point \"^1.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+string-width@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/string-width\/-\/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e\"\n+ dependencies:\n+ is-fullwidth-code-point \"^2.0.0\"\n+ strip-ansi \"^3.0.0\"\n+\n+stringstream@~0.0.4:\n+ version \"0.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stringstream\/-\/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878\"\n+\n+strip-ansi@^3.0.0, strip-ansi@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-ansi\/-\/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf\"\n+ dependencies:\n+ ansi-regex \"^2.0.0\"\n+\n+strip-bom@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-bom\/-\/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e\"\n+ dependencies:\n+ is-utf8 \"^0.2.0\"\n+\n+strip-indent@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-indent\/-\/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2\"\n+ dependencies:\n+ get-stdin \"^4.0.1\"\n+\n+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/strip-json-comments\/-\/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a\"\n+\n+style-loader@^0.13.1:\n+ version \"0.13.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/style-loader\/-\/style-loader-0.13.2.tgz#74533384cf698c7104c7951150b49717adc2f3bb\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+\n+stylus-loader@^2.4.0:\n+ version \"2.5.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus-loader\/-\/stylus-loader-2.5.0.tgz#4f921afc99f7a3d2f89d45ebcbc145822bf3fe71\"\n+ dependencies:\n+ loader-utils \"^0.2.9\"\n+ when \"~3.6.x\"\n+\n+stylus@^0.54.5:\n+ version \"0.54.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/stylus\/-\/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79\"\n+ dependencies:\n+ css-parse \"1.7.x\"\n+ debug \"*\"\n+ glob \"7.0.x\"\n+ mkdirp \"0.5.x\"\n+ sax \"0.5.x\"\n+ source-map \"0.1.x\"\n+\n+supports-color@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7\"\n+\n+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2, supports-color@^3.2.3:\n+ version \"3.2.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/supports-color\/-\/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6\"\n+ dependencies:\n+ has-flag \"^1.0.0\"\n+\n+svgo@^0.7.0:\n+ version \"0.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/svgo\/-\/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5\"\n+ dependencies:\n+ coa \"~1.0.1\"\n+ colors \"~1.1.2\"\n+ csso \"~2.3.1\"\n+ js-yaml \"~3.7.0\"\n+ mkdirp \"~0.5.1\"\n+ sax \"~1.2.1\"\n+ whet.extend \"~0.9.9\"\n+\n+symbol-observable@^1.0.1:\n+ version \"1.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/symbol-observable\/-\/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d\"\n+\n+tapable@^0.2.5, tapable@~0.2.5:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tapable\/-\/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d\"\n+\n+tar-pack@~3.3.0:\n+ version \"3.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar-pack\/-\/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae\"\n+ dependencies:\n+ debug \"~2.2.0\"\n+ fstream \"~1.0.10\"\n+ fstream-ignore \"~1.0.5\"\n+ once \"~1.3.3\"\n+ readable-stream \"~2.1.4\"\n+ rimraf \"~2.5.1\"\n+ tar \"~2.2.1\"\n+ uid-number \"~0.0.6\"\n+\n+tar@^2.0.0, tar@~2.2.1:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tar\/-\/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1\"\n+ dependencies:\n+ block-stream \"*\"\n+ fstream \"^1.0.2\"\n+ inherits \"2\"\n+\n+temp@0.8.3:\n+ version \"0.8.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/temp\/-\/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59\"\n+ dependencies:\n+ os-tmpdir \"^1.0.0\"\n+ rimraf \"~2.2.6\"\n+\n+through@^2.3.6, through@X.X.X:\n+ version \"2.3.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/through\/-\/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5\"\n+\n+timed-out@^3.0.0:\n+ version \"3.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timed-out\/-\/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217\"\n+\n+timers-browserify@^2.0.2:\n+ version \"2.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/timers-browserify\/-\/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86\"\n+ dependencies:\n+ setimmediate \"^1.0.4\"\n+\n+tmp@^0.0.31, tmp@0.0.x:\n+ version \"0.0.31\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.24:\n+ version \"0.0.24\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12\"\n+\n+tmp@0.0.28:\n+ version \"0.0.28\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+tmp@0.0.30:\n+ version \"0.0.30\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tmp\/-\/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed\"\n+ dependencies:\n+ os-tmpdir \"~1.0.1\"\n+\n+to-array@0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-array\/-\/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890\"\n+\n+to-arraybuffer@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-arraybuffer\/-\/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43\"\n+\n+to-fast-properties@^1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/to-fast-properties\/-\/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320\"\n+\n+toposort@^1.0.0:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/toposort\/-\/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c\"\n+\n+tough-cookie@~2.3.0:\n+ version \"2.3.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tough-cookie\/-\/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a\"\n+ dependencies:\n+ punycode \"^1.4.1\"\n+\n+trim-newlines@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-newlines\/-\/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613\"\n+\n+trim-right@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/trim-right\/-\/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003\"\n+\n+ts-node@~2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ts-node\/-\/ts-node-2.0.0.tgz#16e4fecc949088238b4cbf1c39c9582526b66f74\"\n+ dependencies:\n+ arrify \"^1.0.0\"\n+ chalk \"^1.1.1\"\n+ diff \"^3.1.0\"\n+ make-error \"^1.1.1\"\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ pinkie \"^2.0.4\"\n+ source-map-support \"^0.4.0\"\n+ tsconfig \"^5.0.2\"\n+ v8flags \"^2.0.11\"\n+ xtend \"^4.0.0\"\n+ yn \"^1.2.0\"\n+\n+tsconfig@^5.0.2:\n+ version \"5.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsconfig\/-\/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a\"\n+ dependencies:\n+ any-promise \"^1.3.0\"\n+ parse-json \"^2.2.0\"\n+ strip-bom \"^2.0.0\"\n+ strip-json-comments \"^2.0.0\"\n+\n+tsickle@^0.2:\n+ version \"0.2.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.2.6.tgz#ad4abf92e74ebdf3fb5aa187ca85b02066fe1a1b\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tsickle@^0.21.0:\n+ version \"0.21.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tsickle\/-\/tsickle-0.21.5.tgz#341c1834b9d293c8cbffc295a86a1e46268ed22f\"\n+ dependencies:\n+ minimist \"^1.2.0\"\n+ mkdirp \"^0.5.1\"\n+ source-map \"^0.5.6\"\n+ source-map-support \"^0.4.2\"\n+\n+tslint@~4.4.2:\n+ version \"4.4.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tslint\/-\/tslint-4.4.2.tgz#b14cb79ae039c72471ab4c2627226b940dda19c6\"\n+ dependencies:\n+ babel-code-frame \"^6.20.0\"\n+ colors \"^1.1.2\"\n+ diff \"^3.0.1\"\n+ findup-sync \"~0.3.0\"\n+ glob \"^7.1.1\"\n+ optimist \"~0.6.0\"\n+ resolve \"^1.1.7\"\n+ update-notifier \"^1.0.2\"\n+\n+tty-browserify@0.0.0:\n+ version \"0.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tty-browserify\/-\/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6\"\n+\n+tunnel-agent@~0.4.1:\n+ version \"0.4.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tunnel-agent\/-\/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb\"\n+\n+tweetnacl@^0.14.3, tweetnacl@~0.14.0:\n+ version \"0.14.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/tweetnacl\/-\/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64\"\n+\n+type-is@~1.6.14:\n+ version \"1.6.14\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/type-is\/-\/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2\"\n+ dependencies:\n+ media-typer \"0.3.0\"\n+ mime-types \"~2.1.13\"\n+\n+typescript@^2.1.6:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9\"\n+\n+\"typescript@>=2.0.0 <2.2.0\":\n+ version \"2.1.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/typescript\/-\/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607\"\n+\n+uglify-js@^2.6, uglify-js@^2.7.5, uglify-js@2.8.x:\n+ version \"2.8.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.8.4.tgz#5aeb6fd6f1f0a672dea63795016590502c290513\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ source-map \"~0.5.1\"\n+ uglify-to-browserify \"~1.0.0\"\n+ yargs \"~3.10.0\"\n+\n+uglify-js@~2.3:\n+ version \"2.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-js\/-\/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a\"\n+ dependencies:\n+ async \"~0.2.6\"\n+ optimist \"~0.3.5\"\n+ source-map \"~0.1.7\"\n+\n+uglify-to-browserify@~1.0.0:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uglify-to-browserify\/-\/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7\"\n+\n+uid-number@~0.0.6:\n+ version \"0.0.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uid-number\/-\/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81\"\n+\n+ultron@1.0.x:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ultron\/-\/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa\"\n+\n+uniq@^1.0.1:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniq\/-\/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff\"\n+\n+uniqid@^4.0.0:\n+ version \"4.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqid\/-\/uniqid-4.1.1.tgz#89220ddf6b751ae52b5f72484863528596bb84c1\"\n+ dependencies:\n+ macaddress \"^0.2.8\"\n+\n+uniqs@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uniqs\/-\/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02\"\n+\n+unpipe@~1.0.0, unpipe@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unpipe\/-\/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec\"\n+\n+unzip-response@^1.0.2:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/unzip-response\/-\/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe\"\n+\n+update-notifier@^1.0.2:\n+ version \"1.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/update-notifier\/-\/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a\"\n+ dependencies:\n+ boxen \"^0.6.0\"\n+ chalk \"^1.0.0\"\n+ configstore \"^2.0.0\"\n+ is-npm \"^1.0.0\"\n+ latest-version \"^2.0.0\"\n+ lazy-req \"^1.1.0\"\n+ semver-diff \"^2.0.0\"\n+ xdg-basedir \"^2.0.0\"\n+\n+upper-case@^1.1.1:\n+ version \"1.1.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/upper-case\/-\/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598\"\n+\n+url-loader@^0.5.7:\n+ version \"0.5.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-loader\/-\/url-loader-0.5.8.tgz#b9183b1801e0f847718673673040bc9dc1c715c5\"\n+ dependencies:\n+ loader-utils \"^1.0.2\"\n+ mime \"1.3.x\"\n+\n+url-parse-lax@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse-lax\/-\/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73\"\n+ dependencies:\n+ prepend-http \"^1.0.1\"\n+\n+url-parse@^1.1.1:\n+ version \"1.1.8\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.1.8.tgz#7a65b3a8d57a1e86af6b4e2276e34774167c0156\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url-parse@1.0.x:\n+ version \"1.0.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url-parse\/-\/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b\"\n+ dependencies:\n+ querystringify \"0.0.x\"\n+ requires-port \"1.0.x\"\n+\n+url@^0.11.0:\n+ version \"0.11.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/url\/-\/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1\"\n+ dependencies:\n+ punycode \"1.3.2\"\n+ querystring \"0.2.0\"\n+\n+user-home@^1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/user-home\/-\/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190\"\n+\n+useragent@^2.1.10:\n+ version \"2.1.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/useragent\/-\/useragent-2.1.12.tgz#aa7da6cdc48bdc37ba86790871a7321d64edbaa2\"\n+ dependencies:\n+ lru-cache \"2.2.x\"\n+ tmp \"0.0.x\"\n+\n+util-deprecate@~1.0.1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util-deprecate\/-\/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf\"\n+\n+util@^0.10.3, util@0.10.3:\n+ version \"0.10.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/util\/-\/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9\"\n+ dependencies:\n+ inherits \"2.0.1\"\n+\n+utila@~0.3:\n+ version \"0.3.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226\"\n+\n+utila@~0.4:\n+ version \"0.4.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utila\/-\/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c\"\n+\n+utils-merge@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/utils-merge\/-\/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8\"\n+\n+uuid@^2.0.1, uuid@^2.0.2:\n+ version \"2.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a\"\n+\n+uuid@^3.0.0:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/uuid\/-\/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1\"\n+\n+v8flags@^2.0.11:\n+ version \"2.0.11\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/v8flags\/-\/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881\"\n+ dependencies:\n+ user-home \"^1.1.1\"\n+\n+validate-npm-package-license@^3.0.1:\n+ version \"3.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/validate-npm-package-license\/-\/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc\"\n+ dependencies:\n+ spdx-correct \"~1.0.0\"\n+ spdx-expression-parse \"~1.0.0\"\n+\n+vary@~1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vary\/-\/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140\"\n+\n+vendors@^1.0.0:\n+ version \"1.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vendors\/-\/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22\"\n+\n+verror@1.3.6:\n+ version \"1.3.6\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/verror\/-\/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c\"\n+ dependencies:\n+ extsprintf \"1.0.2\"\n+\n+vlq@^0.2.1:\n+ version \"0.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vlq\/-\/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c\"\n+\n+vm-browserify@0.0.4:\n+ version \"0.0.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/vm-browserify\/-\/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73\"\n+ dependencies:\n+ indexof \"0.0.1\"\n+\n+void-elements@^2.0.0:\n+ version \"2.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/void-elements\/-\/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec\"\n+\n+walk-sync@^0.3.1:\n+ version \"0.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/walk-sync\/-\/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465\"\n+ dependencies:\n+ ensure-posix-path \"^1.0.0\"\n+ matcher-collection \"^1.0.0\"\n+\n+watchpack@^1.2.0:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/watchpack\/-\/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87\"\n+ dependencies:\n+ async \"^2.1.2\"\n+ chokidar \"^1.4.3\"\n+ graceful-fs \"^4.1.2\"\n+\n+wbuf@^1.1.0, wbuf@^1.4.0:\n+ version \"1.7.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wbuf\/-\/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe\"\n+ dependencies:\n+ minimalistic-assert \"^1.0.0\"\n+\n+webdriver-js-extender@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-js-extender\/-\/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515\"\n+ dependencies:\n+ \"@types\/selenium-webdriver\" \"^2.53.35\"\n+ selenium-webdriver \"^2.53.2\"\n+\n+webdriver-manager@^12.0.1:\n+ version \"12.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webdriver-manager\/-\/webdriver-manager-12.0.2.tgz#9bc541e975b18de8bf7f6ad163b69488169e8914\"\n+ dependencies:\n+ adm-zip \"^0.4.7\"\n+ chalk \"^1.1.1\"\n+ del \"^2.2.0\"\n+ glob \"^7.0.3\"\n+ ini \"^1.3.4\"\n+ minimist \"^1.2.0\"\n+ q \"^1.4.1\"\n+ request \"^2.78.0\"\n+ rimraf \"^2.5.2\"\n+ semver \"^5.3.0\"\n+ xml2js \"^0.4.17\"\n+\n+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.9.0:\n+ version \"1.10.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-middleware\/-\/webpack-dev-middleware-1.10.1.tgz#c6b4cf428139cf1aefbe06a0c00fdb4f8da2f893\"\n+ dependencies:\n+ memory-fs \"~0.4.1\"\n+ mime \"^1.3.4\"\n+ path-is-absolute \"^1.0.0\"\n+ range-parser \"^1.0.3\"\n+\n+webpack-dev-server@~2.3.0:\n+ version \"2.3.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-dev-server\/-\/webpack-dev-server-2.3.0.tgz#0437704bbd4d941a6e4c061eb3cc232ed7d06101\"\n+ dependencies:\n+ ansi-html \"0.0.7\"\n+ chokidar \"^1.6.0\"\n+ compression \"^1.5.2\"\n+ connect-history-api-fallback \"^1.3.0\"\n+ express \"^4.13.3\"\n+ html-entities \"^1.2.0\"\n+ http-proxy-middleware \"~0.17.1\"\n+ opn \"4.0.2\"\n+ portfinder \"^1.0.9\"\n+ serve-index \"^1.7.2\"\n+ sockjs \"0.3.18\"\n+ sockjs-client \"1.1.1\"\n+ spdy \"^3.4.1\"\n+ strip-ansi \"^3.0.0\"\n+ supports-color \"^3.1.1\"\n+ webpack-dev-middleware \"^1.9.0\"\n+ yargs \"^6.0.0\"\n+\n+webpack-merge@^2.4.0:\n+ version \"2.6.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-merge\/-\/webpack-merge-2.6.1.tgz#f1d801d2c5d39f83ffec9f119240b3e3be994a1c\"\n+ dependencies:\n+ lodash \"^4.17.4\"\n+\n+webpack-sources@^0.1.0, webpack-sources@^0.1.4:\n+ version \"0.1.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack-sources\/-\/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd\"\n+ dependencies:\n+ source-list-map \"~0.1.7\"\n+ source-map \"~0.5.3\"\n+\n+webpack@~2.2.0:\n+ version \"2.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/webpack\/-\/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475\"\n+ dependencies:\n+ acorn \"^4.0.4\"\n+ acorn-dynamic-import \"^2.0.0\"\n+ ajv \"^4.7.0\"\n+ ajv-keywords \"^1.1.1\"\n+ async \"^2.1.2\"\n+ enhanced-resolve \"^3.0.0\"\n+ interpret \"^1.0.0\"\n+ json-loader \"^0.5.4\"\n+ loader-runner \"^2.3.0\"\n+ loader-utils \"^0.2.16\"\n+ memory-fs \"~0.4.1\"\n+ mkdirp \"~0.5.0\"\n+ node-libs-browser \"^2.0.0\"\n+ source-map \"^0.5.3\"\n+ supports-color \"^3.1.0\"\n+ tapable \"~0.2.5\"\n+ uglify-js \"^2.7.5\"\n+ watchpack \"^1.2.0\"\n+ webpack-sources \"^0.1.4\"\n+ yargs \"^6.0.0\"\n+\n+websocket-driver@>=0.5.1:\n+ version \"0.6.5\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-driver\/-\/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36\"\n+ dependencies:\n+ websocket-extensions \">=0.1.1\"\n+\n+websocket-extensions@>=0.1.1:\n+ version \"0.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/websocket-extensions\/-\/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7\"\n+\n+when@~3.6.x:\n+ version \"3.6.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/when\/-\/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e\"\n+\n+whet.extend@~0.9.9:\n+ version \"0.9.9\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/whet.extend\/-\/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1\"\n+\n+which-module@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which-module\/-\/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f\"\n+\n+which@^1.2.1, which@^1.2.9, which@1:\n+ version \"1.2.12\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/which\/-\/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192\"\n+ dependencies:\n+ isexe \"^1.1.1\"\n+\n+wide-align@^1.1.0:\n+ version \"1.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wide-align\/-\/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+widest-line@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/widest-line\/-\/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+\n+window-size@^0.2.0:\n+ version \"0.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075\"\n+\n+window-size@0.1.0:\n+ version \"0.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/window-size\/-\/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d\"\n+\n+wordwrap@~0.0.2:\n+ version \"0.0.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107\"\n+\n+wordwrap@0.0.2:\n+ version \"0.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wordwrap\/-\/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f\"\n+\n+wrap-ansi@^2.0.0:\n+ version \"2.1.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrap-ansi\/-\/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85\"\n+ dependencies:\n+ string-width \"^1.0.1\"\n+ strip-ansi \"^3.0.1\"\n+\n+wrappy@1:\n+ version \"1.0.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wrappy\/-\/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f\"\n+\n+write-file-atomic@^1.1.2:\n+ version \"1.3.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/write-file-atomic\/-\/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a\"\n+ dependencies:\n+ graceful-fs \"^4.1.11\"\n+ imurmurhash \"^0.1.4\"\n+ slide \"^1.1.5\"\n+\n+ws@^1.0.1:\n+ version \"1.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+ws@1.1.1:\n+ version \"1.1.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/ws\/-\/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018\"\n+ dependencies:\n+ options \">=0.0.5\"\n+ ultron \"1.0.x\"\n+\n+wtf-8@1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/wtf-8\/-\/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a\"\n+\n+xdg-basedir@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xdg-basedir\/-\/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2\"\n+ dependencies:\n+ os-homedir \"^1.0.0\"\n+\n+xml-char-classes@^1.0.0:\n+ version \"1.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml-char-classes\/-\/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d\"\n+\n+xml2js@^0.4.17:\n+ version \"0.4.17\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868\"\n+ dependencies:\n+ sax \">=0.6.0\"\n+ xmlbuilder \"^4.1.0\"\n+\n+xml2js@0.4.4:\n+ version \"0.4.4\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xml2js\/-\/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d\"\n+ dependencies:\n+ sax \"0.6.x\"\n+ xmlbuilder \">=1.0.0\"\n+\n+xmlbuilder@^4.1.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5\"\n+ dependencies:\n+ lodash \"^4.0.0\"\n+\n+xmlbuilder@>=1.0.0:\n+ version \"8.2.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlbuilder\/-\/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773\"\n+\n+xmldom@^0.1.19:\n+ version \"0.1.27\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmldom\/-\/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9\"\n+\n+xmlhttprequest-ssl@1.5.3:\n+ version \"1.5.3\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xmlhttprequest-ssl\/-\/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d\"\n+\n+xtend@^4.0.0:\n+ version \"4.0.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/xtend\/-\/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af\"\n+\n+y18n@^3.2.1:\n+ version \"3.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/y18n\/-\/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41\"\n+\n+yallist@^2.0.0:\n+ version \"2.0.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yallist\/-\/yallist-2.0.0.tgz#306c543835f09ee1a4cb23b7bce9ab341c91cdd4\"\n+\n+yargs-parser@^2.4.1:\n+ version \"2.4.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ lodash.assign \"^4.0.6\"\n+\n+yargs-parser@^4.2.0:\n+ version \"4.2.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs-parser\/-\/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+\n+yargs@^4.7.1:\n+ version \"4.8.1\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0\"\n+ dependencies:\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ lodash.assign \"^4.0.3\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.1\"\n+ which-module \"^1.0.0\"\n+ window-size \"^0.2.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^2.4.1\"\n+\n+yargs@^6.0.0:\n+ version \"6.6.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208\"\n+ dependencies:\n+ camelcase \"^3.0.0\"\n+ cliui \"^3.2.0\"\n+ decamelize \"^1.1.1\"\n+ get-caller-file \"^1.0.1\"\n+ os-locale \"^1.4.0\"\n+ read-pkg-up \"^1.0.1\"\n+ require-directory \"^2.1.1\"\n+ require-main-filename \"^1.0.1\"\n+ set-blocking \"^2.0.0\"\n+ string-width \"^1.0.2\"\n+ which-module \"^1.0.0\"\n+ y18n \"^3.2.1\"\n+ yargs-parser \"^4.2.0\"\n+\n+yargs@~3.10.0:\n+ version \"3.10.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yargs\/-\/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1\"\n+ dependencies:\n+ camelcase \"^1.0.2\"\n+ cliui \"^2.1.0\"\n+ decamelize \"^1.0.0\"\n+ window-size \"0.1.0\"\n+\n+yeast@0.1.2:\n+ version \"0.1.2\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yeast\/-\/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419\"\n+\n+yn@^1.2.0:\n+ version \"1.2.0\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/yn\/-\/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63\"\n+\n+zone.js@^0.7.2, zone.js@^0.7.6:\n+ version \"0.7.7\"\n+ resolved \"https:\/\/registry.yarnpkg.com\/zone.js\/-\/zone.js-0.7.7.tgz#0d7b7ae7f68012d03438b8a18f5763441bbf9620\"\n+\n"}]},{"id":"9256334","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/tslint.json","awayPaths":["webapp\/tslint.json"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9256333","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/tslint.json","currentPath":"webapp\/tslint.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"48","delLines":"28","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"96","newLength":"116","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"rulesDirectory\": [\n- \"..\/..\/..\/node_modules\/codelyzer\"\n+ \"node_modules\/codelyzer\"\n ],\n \"rules\": {\n+ \"callable-types\": true,\n \"class-name\": true,\n- \"comment-format\": [true, \"check-space\"],\n+ \"comment-format\": [\n+ true,\n+ \"check-space\"\n+ ],\n \"curly\": true,\n \"eofline\": true,\n \"forin\": true,\n- \"indent\": [true, \"spaces\"],\n+ \"import-blacklist\": [true, \"rxjs\"],\n+ \"import-spacing\": true,\n+ \"indent\": [\n+ true,\n+ \"spaces\"\n+ ],\n+ \"interface-over-type-literal\": true,\n \"label-position\": true,\n- \"label-undefined\": true,\n- \"max-line-length\": [true, 140],\n+ \"max-line-length\": [\n+ true,\n+ 140\n+ ],\n \"member-access\": false,\n \"member-ordering\": [\n true,\n \"static-before-instance\",\n \"variables-before-functions\"\n ],\n \"no-arg\": true,\n \"no-bitwise\": true,\n- \"no-conditional-assignment\": true,\n \"no-console\": [\n true,\n \"debug\",\n \"info\",\n \"time\",\n \"timeEnd\",\n \"trace\"\n ],\n \"no-construct\": true,\n \"no-debugger\": true,\n- \"no-duplicate-key\": true,\n \"no-duplicate-variable\": true,\n- \"no-empty\": true,\n+ \"no-empty\": false,\n+ \"no-empty-interface\": true,\n \"no-eval\": true,\n- \"no-inferrable-types\": true,\n+ \"no-inferrable-types\": [true, \"ignore-params\"],\n \"no-shadowed-variable\": true,\n \"no-string-literal\": false,\n+ \"no-string-throw\": true,\n \"no-switch-case-fall-through\": true,\n- \"no-unreachable\": true,\n+ \"no-trailing-whitespace\": true,\n \"no-unused-expression\": true,\n- \"no-unused-variable\": true,\n \"no-use-before-declare\": true,\n \"no-var-keyword\": true,\n \"object-literal-sort-keys\": false,\n \"one-line\": [\n true,\n \"check-open-brace\",\n \"check-catch\",\n \"check-else\",\n \"check-whitespace\"\n ],\n- \"quotemark\": [true, \"single\"],\n+ \"prefer-const\": true,\n+ \"quotemark\": [\n+ true,\n+ \"single\"\n+ ],\n \"radix\": true,\n- \"semicolon\": [\"always\"],\n- \"switch-default\": true,\n- \"trailing-comma\": [true, {\"multiline\": \"always\", \"singleline\": \"never\"}],\n- \"triple-equals\": [true, \"allow-null-check\"],\n+ \"semicolon\": [\n+ \"always\"\n+ ],\n+ \"triple-equals\": [\n+ true,\n+ \"allow-null-check\"\n+ ],\n \"typedef-whitespace\": [\n true,\n {\n \"call-signature\": \"nospace\",\n \"index-signature\": \"nospace\",\n \"parameter\": \"nospace\",\n \"property-declaration\": \"nospace\",\n \"variable-declaration\": \"nospace\"\n }\n ],\n- \"use-isnan\": true,\n- \"variable-name\": [true, \"ban-keywords\", \"check-format\"],\n+ \"typeof-compare\": true,\n+ \"unified-signatures\": true,\n+ \"variable-name\": false,\n \"whitespace\": [\n true,\n \"check-branch\",\n \"check-decl\",\n \"check-operator\",\n \"check-separator\",\n \"check-type\"\n ],\n \n- \"component-class-suffix\": true,\n- \"component-selector-name\": [true, \"kebab-case\"],\n- \"component-selector-type\": [true, \"element\"],\n- \"directive-class-suffix\": true,\n- \"directive-selector-name\": [true, \"camelCase\"],\n- \"directive-selector-type\": [true, \"attribute\"],\n+ \"directive-selector\": [true, \"attribute\", \"app\", \"camelCase\"],\n+ \"component-selector\": [true, \"element\", \"app\", \"kebab-case\"],\n+ \"use-input-property-decorator\": true,\n+ \"use-output-property-decorator\": true,\n+ \"use-host-property-decorator\": true,\n \"no-input-rename\": true,\n \"no-output-rename\": true,\n- \"use-host-property-decorator\": true,\n- \"use-input-property-decorator\": true,\n \"use-life-cycle-interface\": true,\n- \"use-output-property-decorator\": true,\n- \"use-pipe-transform-interface\": true\n+ \"use-pipe-transform-interface\": true,\n+ \"component-class-suffix\": true,\n+ \"directive-class-suffix\": true,\n+ \"no-access-missing-member\": true,\n+ \"templates-use-public\": true,\n+ \"invoke-injectable\": true\n }\n }\n"}]},{"id":"9256332","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compileOnSave\": false,\n+ \"compilerOptions\": {\n+ \"outDir\": \".\/dist\/out-tsc\",\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ]\n+ }\n+}\n"}]},{"id":"9256331","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.spec.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/spec\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"baseUrl\": \"\",\n+ \"types\": [\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ },\n+ \"files\": [\n+ \"test.ts\"\n+ ],\n+ \"include\": [\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9256330","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/tsconfig.app.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"strictNullChecks\": true,\n+ \"noImplicitAny\": true,\n+ \"lib\": [\n+ \"es2016\",\n+ \"dom\"\n+ ],\n+ \"outDir\": \"..\/out-tsc\/app\",\n+ \"target\": \"es5\",\n+ \"module\": \"es2015\",\n+ \"baseUrl\": \".\",\n+ \"types\": [],\n+ \"paths\": {\n+ \"@shared\/*\": [\n+ \"app\/shared\/*\"\n+ ]\n+ }\n+ },\n+ \"exclude\": [\n+ \"test.ts\",\n+ \"**\/*.spec.ts\"\n+ ]\n+}\n"}]},{"id":"9256329","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/test.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ This file is required by karma.conf.js and loads recursively all the .spec and framework files\n+\n+import 'zone.js\/dist\/long-stack-trace-zone';\n+import 'zone.js\/dist\/proxy.js';\n+import 'zone.js\/dist\/sync-test';\n+import 'zone.js\/dist\/jasmine-patch';\n+import 'zone.js\/dist\/async-test';\n+import 'zone.js\/dist\/fake-async-test';\n+import { getTestBed } from '@angular\/core\/testing';\n+import {\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting\n+} from '@angular\/platform-browser-dynamic\/testing';\n+\n+\/\/ Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.\n+declare var __karma__: any;\n+declare var require: any;\n+\n+\/\/ Prevent Karma from running prematurely.\n+__karma__.loaded = function () {};\n+\n+\/\/ First, initialize the Angular testing environment.\n+getTestBed().initTestEnvironment(\n+ BrowserDynamicTestingModule,\n+ platformBrowserDynamicTesting()\n+);\n+\/\/ Then we find all the tests.\n+const context = require.context('.\/', true, \/\\.spec\\.ts$\/);\n+\/\/ And load the modules.\n+context.keys().map(context);\n+\/\/ Finally, start Karma to run the tests.\n+__karma__.start();\n"}]},{"id":"9256328","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/styles.css","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/* You can add global styles to this file, and also import other style files *\/\n"}]},{"id":"9256327","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/polyfills.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"68","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"68","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/**\n+ * This file includes polyfills needed by Angular and is loaded before the app.\n+ * You can add your own extra polyfills to this file.\n+ *\n+ * This file is divided into 2 sections:\n+ * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\n+ * 2. Application imports. Files imported after ZoneJS that should be loaded before your main\n+ * file.\n+ *\n+ * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\n+ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\n+ * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\n+ *\n+ * Learn more in https:\/\/angular.io\/docs\/ts\/latest\/guide\/browser-support.html\n+ *\/\n+\n+\/***************************************************************************************************\n+ * BROWSER POLYFILLS\n+ *\/\n+\n+\/** IE9, IE10 and IE11 requires all of the following polyfills. **\/\n+\/\/ import 'core-js\/es6\/symbol';\n+\/\/ import 'core-js\/es6\/object';\n+\/\/ import 'core-js\/es6\/function';\n+\/\/ import 'core-js\/es6\/parse-int';\n+\/\/ import 'core-js\/es6\/parse-float';\n+\/\/ import 'core-js\/es6\/number';\n+\/\/ import 'core-js\/es6\/math';\n+\/\/ import 'core-js\/es6\/string';\n+\/\/ import 'core-js\/es6\/date';\n+\/\/ import 'core-js\/es6\/array';\n+\/\/ import 'core-js\/es6\/regexp';\n+\/\/ import 'core-js\/es6\/map';\n+\/\/ import 'core-js\/es6\/set';\n+\n+\/** IE10 and IE11 requires the following for NgClass support on SVG elements *\/\n+\/\/ import 'classlist.js'; \/\/ Run `npm install --save classlist.js`.\n+\n+\/** IE10 and IE11 requires the following to support `@angular\/animation`. *\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\/** Evergreen browsers require these. **\/\n+import 'core-js\/es6\/reflect';\n+import 'core-js\/es7\/reflect';\n+\n+\n+\/** ALL Firefox browsers require the following to support `@angular\/animation`. **\/\n+\/\/ import 'web-animations-js'; \/\/ Run `npm install --save web-animations-js`.\n+\n+\n+\n+\/***************************************************************************************************\n+ * Zone JS is required by Angular itself.\n+ *\/\n+import 'zone.js\/dist\/zone'; \/\/ Included with Angular CLI.\n+\n+\n+\n+\/***************************************************************************************************\n+ * APPLICATION IMPORTS\n+ *\/\n+\n+\/**\n+ * Date, currency, decimal and percent pipes.\n+ * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10\n+ *\/\n+\/\/ import 'intl'; \/\/ Run `npm install --save intl`.\n"}]},{"id":"9256326","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/index.ts","awayPaths":["webapp\/src\/main.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9256325","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/index.ts","currentPath":"webapp\/src\/main.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n import { enableProdMode } from '@angular\/core';\n-import { environment } from '.\/environment\/environment';\n-import { AppModule } from '.\/app.module';\n+import { platformBrowserDynamic } from '@angular\/platform-browser-dynamic';\n+\n+import { AppModule } from '.\/app\/app.module';\n+import { environment } from '.\/environments\/environment';\n \n if (environment.production) {\n enableProdMode();\n }\n \n platformBrowserDynamic().bootstrapModule(AppModule);\n"}]},{"id":"9256324","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/index.html","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+<!doctype html>\n+<html>\n+<head>\n+ <meta charset=\"utf-8\">\n+ <title>Freelancer.com<\/title>\n+ <base href=\"\/\">\n+\n+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n+ <link rel=\"icon\" type=\"image\/x-icon\" href=\"favicon.ico\">\n+<\/head>\n+<body>\n+ <app-root><\/app-root>\n+<\/body>\n+<\/html>\n"}]},{"id":"9256323","metadata":{"old:file:size":2238,"old:file:mime-type":"image\/x-icon","old:binary-phid":"PHID-FILE-ntylx6rw26fpkd6yzsg7"},"oldPath":null,"currentPath":"public\/favicon.ico","awayPaths":["webapp\/src\/favicon.ico"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9256322","metadata":{"new:file:size":2238,"new:file:mime-type":"image\/x-icon","new:binary-phid":"PHID-FILE-jrggimptsak7hwy64st7"},"oldPath":"public\/favicon.ico","currentPath":"webapp\/src\/favicon.ico","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"2","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9256321","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/environments\/environment.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ The file contents for the current environment will overwrite these during build.\n+\/\/ The build system defaults to the dev environment which uses `environment.ts`, but if you do\n+\/\/ `ng build --env=prod` then `environment.prod.ts` will be used instead.\n+\/\/ The list of which env maps to which file can be found in `.angular-cli.json`.\n+\n+export const environment = {\n+ production: false,\n+ authConfig: {\n+ baseUrl: 'https:\/\/laurent-fli.syd1.fln-dev.net\/auth',\n+ authHashCookie: 'GETAFREEST_AUTH_HASH_V2',\n+ userIdCookie: 'GETAFREEST_USER_ID',\n+ },\n+ datastoreConfig: {\n+ apiBaseUrl: 'https:\/\/laurent-fli.syd1.fln-dev.net\/api',\n+ ajaxBaseUrl: 'https:\/\/laurent-fli.syd1.fln-dev.net\/ajax',\n+ webSocketUrl: 'https:\/\/gotifications.syd1.fln-dev.net'\n+ },\n+ billingConfig: {\n+ baseUrl: 'https:\/\/api.flnbln-stg.net',\n+ },\n+ facebookAppId: '',\n+ languageCookie: 'GETAFREEST_LANGUAGE'\n+};\n+\n"}]},{"id":"9256320","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","awayPaths":["webapp\/src\/environments\/environment.prod.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9256319","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/environment\/environment-dev.ts","currentPath":"webapp\/src\/environments\/environment.prod.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const environment = {\n- production: false,\n+ production: true\n };\n"}]},{"id":"9256318","metadata":[],"oldPath":"webapp\/src\/assets\/.gitkeep","currentPath":"webapp\/src\/assets\/.gitkeep","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9256317","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":["webapp\/src\/app\/shared\/ui\/ui.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9256316","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"webapp\/src\/app\/shared\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrolling } from '.\/infinite-scrolling';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrolling,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9256315","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","awayPaths":["webapp\/src\/app\/shared\/ui\/time-ago.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"26","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"26","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'timeAgo',\n-})\n-export class TimeAgoPipe implements PipeTransform {\n- transform(val: number) {\n- const delta = Math.round(new Date().getTime() \/ 1000) - val;\n-\n- const MINUTE = 60;\n- const HOUR = MINUTE * 60;\n- const DAY = HOUR * 24;\n- const WEEK = DAY * 7;\n-\n- if (delta <= 60) {\n- return `${delta} seconds`;\n- } else if (delta <= HOUR) {\n- return `${Math.round(delta \/ MINUTE)} minutes`;\n- } else if (delta <= DAY) {\n- return `${Math.round(delta \/ HOUR)} hours`;\n- } else if (delta <= WEEK) {\n- return `${Math.round(delta \/ DAY)} days`;\n- }\n- return `${Math.round(delta \/ WEEK)} weeks`;\n- }\n-}\n"}]},{"id":"9256314","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/time-ago.pipe.ts","currentPath":"webapp\/src\/app\/shared\/ui\/time-ago.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"26","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'timeAgo',\n })\n export class TimeAgoPipe implements PipeTransform {\n transform(val: number) {\n const delta = Math.round(new Date().getTime() \/ 1000) - val;\n \n const MINUTE = 60;\n const HOUR = MINUTE * 60;\n const DAY = HOUR * 24;\n const WEEK = DAY * 7;\n \n if (delta <= 60) {\n return `${delta} seconds`;\n } else if (delta <= HOUR) {\n return `${Math.round(delta \/ MINUTE)} minutes`;\n } else if (delta <= DAY) {\n return `${Math.round(delta \/ HOUR)} hours`;\n } else if (delta <= WEEK) {\n return `${Math.round(delta \/ DAY)} days`;\n }\n return `${Math.round(delta \/ WEEK)} weeks`;\n }\n }\n"}]},{"id":"9256313","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9256312","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/ui\/infinite-scrolling.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver; \n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root,\n+ treshold,\n+ });\n+ this.observer.observe(this.el);\n+ return () => instance.disconnet();\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9256311","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","awayPaths":["webapp\/src\/app\/shared\/ui\/index.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/ui.module';\n"}]},{"id":"9256310","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/index.ts","currentPath":"webapp\/src\/app\/shared\/ui\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/ui.module';\n"}]},{"id":"9256309","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","awayPaths":["webapp\/src\/app\/shared\/ui\/ellipsis.pipe.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9256308","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.ts","currentPath":"webapp\/src\/app\/shared\/ui\/ellipsis.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9256307","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","awayPaths":["webapp\/src\/app\/shared\/ui\/ellipsis.pipe.spec.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Pipe, PipeTransform } from '@angular\/core';\n-\n-@Pipe({\n- name: 'ellipsis',\n-})\n-export class EllipsisPipe implements PipeTransform {\n- transform(val: string, args: number) {\n- if (args === undefined) {\n- return val;\n- }\n-\n- if (val.length > args) {\n- return `${val.substring(0, args)} + ...`;\n- }\n- return val;\n- }\n-}\n"}]},{"id":"9256306","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ellipsis.pipe.spec.ts","currentPath":"webapp\/src\/app\/shared\/ui\/ellipsis.pipe.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Pipe, PipeTransform } from '@angular\/core';\n \n @Pipe({\n name: 'ellipsis',\n })\n export class EllipsisPipe implements PipeTransform {\n transform(val: string, args: number) {\n if (args === undefined) {\n return val;\n }\n \n if (val.length > args) {\n return `${val.substring(0, args)} + ...`;\n }\n return val;\n }\n }\n"}]},{"id":"9256305","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","awayPaths":["webapp\/src\/app\/shared\/ui\/callout.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'ui-callout',\n- templateUrl: '.\/callout.component.html',\n- styleUrls: ['.\/callout.component.less'],\n-})\n-export class CalloutComponent {\n- closeButton = true;\n-}\n"}]},{"id":"9256304","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.ts","currentPath":"webapp\/src\/app\/shared\/ui\/callout.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"10","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"10","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component } from '@angular\/core';\n \n @Component({\n selector: 'ui-callout',\n templateUrl: '.\/callout.component.html',\n styleUrls: ['.\/callout.component.less'],\n })\n export class CalloutComponent {\n closeButton = true;\n }\n"}]},{"id":"9256303","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","awayPaths":["webapp\/src\/app\/shared\/ui\/callout.component.less"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"220","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"220","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/**\n- * Callout\n- *\n- * A callout.\n- *\n- * NOTES:\n- * 1. Background shadow.\n- * 2. Set the background color of the Callout to the color property so we can\n- * use currentColor to let the arrow inherit the Callout background color.\n- *\/\n-\n-@import (reference) \"theme\/variables.less\";\n-@import (reference) \"libs\/mixins.less\";\n-\n-@Callout-backgroundColor: @septenary-color-xxxlight;\n-@Callout-backgroundColor--dark: @quaternary-color-xdark;\n-@Callout-spacing: 36px;\n-@Callout-spacing--small: 24px;\n-@Callout-arrowSize: 8px;\n-\n-.Callout {\n- @this: Callout;\n-\n- .box-sizing(border-box);\n- display: none;\n- position: absolute;\n- right: 20px;\n- z-index: 1030;\n- max-width: 500px;\n- padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n- border-radius: @border-radius;\n- color: @text-color-dark;\n- background: @Callout-backgroundColor;\n-\n- \/* 1. *\/\n- &::before {\n- .absolute-cover();\n- z-index: -1;\n- content: \"\";\n- box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n- 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n- }\n-\n- \/\/ Because of box-sizing: border-box is not set to any element by default\n- \/\/ let's set it on the Callout specific ones first.\n- \/\/ TODO: Obviously refactor this later.\n- & *,\n- & *::before,\n- & *::after {\n- .box-sizing(border-box);\n- }\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing;\n-\n- .@{this}-content-secondary {\n- margin: 0 -@Callout-spacing;\n- padding: @Callout-spacing;\n- }\n- }\n-\n- \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n- \/\/ callout to have a fixed width instead.\n- html:not(.is-mobile-first) & {\n- width: 500px;\n- }\n-\n- &-arrow {\n- position: absolute;\n- bottom: 100%;\n- left: 50%;\n- margin-left: -@Callout-arrowSize;\n- border-right: @Callout-arrowSize solid transparent;\n- border-bottom: @Callout-arrowSize solid currentColor;\n- border-left: @Callout-arrowSize solid transparent;\n- color: @Callout-backgroundColor; \/* 2. *\/\n- }\n-\n- &-close {\n- position: absolute;\n- top: 12px;\n- right: 12px;\n- padding: 0;\n- border: 0;\n- outline: 0;\n- line-height: 0;\n- color: currentColor;\n- background: none;\n- cursor: pointer;\n-\n- &-icon {\n- fill: currentColor;\n- }\n- }\n-\n- &-title {\n- .type(heading3);\n- margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n- font-weight: bold;\n- }\n-\n- &-content {\n- .type(ui);\n-\n- &-secondary {\n- margin: 0 -@Callout-spacing--small;\n- padding: @Callout-spacing--small;\n- background: @quaternary-color-xxxxxlight;\n- }\n- }\n-\n- \/* Positional JS states with the [data-placement] *\/\n- &[data-placement=\"top\"],\n- &[data-placement=\"top-left\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- top: 100%;\n- bottom: auto;\n- border-top: @Callout-arrowSize solid currentColor;\n- border-bottom: 0;\n- }\n- }\n-\n- &[data-placement=\"left\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- right: 0;\n- bottom: auto;\n- margin-top: -@Callout-arrowSize;\n- margin-left: 0;\n- border-top: @Callout-arrowSize solid transparent;\n- border-right: -@Callout-arrowSize;\n- border-bottom-color: transparent;\n- border-left-color: currentColor;\n- }\n- }\n-\n- &[data-placement=\"right\"] {\n- max-width: 360px;\n-\n- .@{this}-arrow {\n- bottom: auto;\n- left: 0;\n- margin-top: -@Callout-arrowSize;\n- margin-left: -@Callout-arrowSize;\n- border-top: @Callout-arrowSize solid transparent;\n- border-left: 0;\n- border-right-color: currentColor;\n- border-bottom-color: transparent;\n- }\n- }\n-\n- &[data-placement=\"bottom-left\"],\n- &[data-placement=\"top-left\"] {\n- .@{this}-arrow {\n- left: 20px;\n- }\n- }\n-\n- &[data-placement=\"bottom-right\"],\n- &[data-placement=\"top-right\"] {\n- .@{this}-arrow {\n- right: 20px;\n- left: auto;\n- }\n- }\n-\n- \/* Modifiers *\/\n- &--small {\n- padding: @Callout-spacing--small;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-title {\n- .type(ui);\n- }\n-\n- .@{this}-content {\n- .type(ui);\n- }\n-\n- .@{this}-close {\n- top: 8px;\n- right: 8px;\n- }\n- }\n-\n- &--formCallout {\n- padding: @Callout-spacing--small;\n- color: @text-color-light;\n- background: @Callout-backgroundColor--dark;\n-\n- @media (min-width: @breakpoint-tablet) {\n- padding: @Callout-spacing--small;\n- }\n-\n- .@{this}-arrow {\n- color: @Callout-backgroundColor--dark;\n- }\n- }\n-\n- &--static {\n- display: block;\n- opacity: 1;\n- right: auto;\n- }\n-\n- &--sticky {\n- position: fixed;\n- }\n-\n- \/* JS state to start animating Callout *\/\n- &.is-@{this}-active {\n- display: block;\n- opacity: 0;\n- }\n-}\n"}]},{"id":"9256302","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.less","currentPath":"webapp\/src\/app\/shared\/ui\/callout.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"220","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"220","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/**\n * Callout\n *\n * A callout.\n *\n * NOTES:\n * 1. Background shadow.\n * 2. Set the background color of the Callout to the color property so we can\n * use currentColor to let the arrow inherit the Callout background color.\n *\/\n \n @import (reference) \"theme\/variables.less\";\n @import (reference) \"libs\/mixins.less\";\n \n @Callout-backgroundColor: @septenary-color-xxxlight;\n @Callout-backgroundColor--dark: @quaternary-color-xdark;\n @Callout-spacing: 36px;\n @Callout-spacing--small: 24px;\n @Callout-arrowSize: 8px;\n \n .Callout {\n @this: Callout;\n \n .box-sizing(border-box);\n display: none;\n position: absolute;\n right: 20px;\n z-index: 1030;\n max-width: 500px;\n padding: @Callout-spacing @Callout-spacing--small @Callout-spacing--small;\n border-radius: @border-radius;\n color: @text-color-dark;\n background: @Callout-backgroundColor;\n \n \/* 1. *\/\n &::before {\n .absolute-cover();\n z-index: -1;\n content: \"\";\n box-shadow: 0 0 12px fade(@septenary-color-xxxdark, 16%),\n 0 8px 24px fade(@septenary-color-xxxdark, 20%);\n }\n \n \/\/ Because of box-sizing: border-box is not set to any element by default\n \/\/ let's set it on the Callout specific ones first.\n \/\/ TODO: Obviously refactor this later.\n & *,\n & *::before,\n & *::after {\n .box-sizing(border-box);\n }\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing;\n \n .@{this}-content-secondary {\n margin: 0 -@Callout-spacing;\n padding: @Callout-spacing;\n }\n }\n \n \/\/ The incompatibilities with pages not using .is-mobile-first, set the\n \/\/ callout to have a fixed width instead.\n html:not(.is-mobile-first) & {\n width: 500px;\n }\n \n &-arrow {\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -@Callout-arrowSize;\n border-right: @Callout-arrowSize solid transparent;\n border-bottom: @Callout-arrowSize solid currentColor;\n border-left: @Callout-arrowSize solid transparent;\n color: @Callout-backgroundColor; \/* 2. *\/\n }\n \n &-close {\n position: absolute;\n top: 12px;\n right: 12px;\n padding: 0;\n border: 0;\n outline: 0;\n line-height: 0;\n color: currentColor;\n background: none;\n cursor: pointer;\n \n &-icon {\n fill: currentColor;\n }\n }\n \n &-title {\n .type(heading3);\n margin-top: 0; \/* For some reason IE 11 has a margin-top *\/\n font-weight: bold;\n }\n \n &-content {\n .type(ui);\n \n &-secondary {\n margin: 0 -@Callout-spacing--small;\n padding: @Callout-spacing--small;\n background: @quaternary-color-xxxxxlight;\n }\n }\n \n \/* Positional JS states with the [data-placement] *\/\n &[data-placement=\"top\"],\n &[data-placement=\"top-left\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n top: 100%;\n bottom: auto;\n border-top: @Callout-arrowSize solid currentColor;\n border-bottom: 0;\n }\n }\n \n &[data-placement=\"left\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n right: 0;\n bottom: auto;\n margin-top: -@Callout-arrowSize;\n margin-left: 0;\n border-top: @Callout-arrowSize solid transparent;\n border-right: -@Callout-arrowSize;\n border-bottom-color: transparent;\n border-left-color: currentColor;\n }\n }\n \n &[data-placement=\"right\"] {\n max-width: 360px;\n \n .@{this}-arrow {\n bottom: auto;\n left: 0;\n margin-top: -@Callout-arrowSize;\n margin-left: -@Callout-arrowSize;\n border-top: @Callout-arrowSize solid transparent;\n border-left: 0;\n border-right-color: currentColor;\n border-bottom-color: transparent;\n }\n }\n \n &[data-placement=\"bottom-left\"],\n &[data-placement=\"top-left\"] {\n .@{this}-arrow {\n left: 20px;\n }\n }\n \n &[data-placement=\"bottom-right\"],\n &[data-placement=\"top-right\"] {\n .@{this}-arrow {\n right: 20px;\n left: auto;\n }\n }\n \n \/* Modifiers *\/\n &--small {\n padding: @Callout-spacing--small;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-title {\n .type(ui);\n }\n \n .@{this}-content {\n .type(ui);\n }\n \n .@{this}-close {\n top: 8px;\n right: 8px;\n }\n }\n \n &--formCallout {\n padding: @Callout-spacing--small;\n color: @text-color-light;\n background: @Callout-backgroundColor--dark;\n \n @media (min-width: @breakpoint-tablet) {\n padding: @Callout-spacing--small;\n }\n \n .@{this}-arrow {\n color: @Callout-backgroundColor--dark;\n }\n }\n \n &--static {\n display: block;\n opacity: 1;\n right: auto;\n }\n \n &--sticky {\n position: fixed;\n }\n \n \/* JS state to start animating Callout *\/\n &.is-@{this}-active {\n display: block;\n opacity: 0;\n }\n }\n"}]},{"id":"9256301","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","awayPaths":["webapp\/src\/app\/shared\/ui\/callout.component.html"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<div class=\"Callout\">\n- <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n- <button *ngIf=\"closeButton\" class=\"Callout-close\">\n- <span class=\"Callout-close-icon Icon Icon--small\">\n- ×\n- <\/span>\n- <\/button>\n-<\/div>\n"}]},{"id":"9256300","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/ui\/callout.component.html","currentPath":"webapp\/src\/app\/shared\/ui\/callout.component.html","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"8","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"8","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <div class=\"Callout\">\n <div class=\"Callout-arrow\" role=\"presentation\"><\/div>\n <button *ngIf=\"closeButton\" class=\"Callout-close\">\n <span class=\"Callout-close-icon Icon Icon--small\">\n ×\n <\/span>\n <\/button>\n <\/div>\n"}]},{"id":"9256299","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"96","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"96","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+\/\/ TODO: use \n+\n+\/*\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();*\/\n+\n+@Injectable()\n+export class WebSocket {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ \n+ constructor(\n+ @Inject(DATASTORE_CONFIG) private datastoreConfig: DatastoreConfig,\n+ ) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.datastoreConfig.webSocketUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\/*\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+ *\/\n"}]},{"id":"9256298","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9256297","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const threadReducer =\n+ (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'API_LOAD_SUCCESS':\n+ console.log(action.payload);\n+ \/*action.payload.reduce((threads, thread) => {\n+ threads[thread.id] = thread;\n+ }, {});\n+ return Object.assign({}, state, threads);*\/\n+ return state;\n+ \n+ \/*case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);*\/\n+ \n+ default:\n+ return state;\n+ }\n+};\n+\n"}]},{"id":"9256296","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"216","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"216","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ contest?: ThreadContest;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: employer;\n+ location: {\n+ administrative_area: null;\n+ city: asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD \n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9256295","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/thread\/thread.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const threadEffects = {\n+ list(query: any) {\n+ return {\n+ api: 'messages\/0.1\/threads',\n+ queryParams: {\n+ unread_count: true,\n+ last_message: true,\n+ message_details: true,\n+ context_details: true,\n+ user_details: true,\n+ }\n+ };\n+ }\n+ \/*push: (threadId, {message}) => ({\n+ url: '\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ body: {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ \/\/ from_user: this.selfId,??\n+ },\n+ }),*\/\n+};\n+\n"}]},{"id":"9256294","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+\n+import { Thread } from '.\/thread\/thread.model';\n+import { threadReducer } from '.\/thread\/thread.reducer';\n+import { threadEffects } from '.\/thread\/thread.effects';\n+\n+import { Message } from '.\/message\/message.model';\n+import { messageReducer } from '.\/message\/message.reducer';\n+import { messageEffects } from '.\/message\/message.effects';\n+\n+\n+\/\/ Model\n+export type Collection = 'messages'\n+ | 'threads';\n+\n+export interface ListOptions {\n+ query: Query;\n+}\n+\n+export interface Query {\n+ [key: string]: any;\n+ limit?: number;\n+ offset?: number;\n+}\n+\n+export interface List<T> {\n+ [query: string]: T[];\n+}\n+\n+export interface RootModel {\n+ threads: List<Thread>;\n+ messages: List<Message>;\n+};\n+\n+\/\/ Effects\n+export interface Effect<T> {\n+ [collection: string]: any; \/\/ FIXME type that\n+}\n+\n+export const effects = {\n+ threads: threadEffects,\n+ messages: messageEffects,\n+};\n+\n+\/\/ Reducers\n+export function rootReducer(state: RootModel, action: any) {\n+ return compose([storeFreeze, combineReducers])({\n+ threads: threadReducer,\n+ messages: messageReducer,\n+ }); \n+}\n+\n"}]},{"id":"9256293","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"62","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"62","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const messageReducer = (\n+ state: any = {}, action: any\n+): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_MESSAGES': {\n+ const newThreads: any = {};\n+ action.payload.forEach((message: any) => {\n+ const messageList: Array<any> = (\n+ newThreads[message.thread_id] || state[message.thread_id] || []\n+ ).filter((m: any) => m.id !== message.id);\n+ messageList.push(message);\n+ newThreads[message.thread_id] = messageList;\n+ });\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9256292","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9256291","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/message\/message.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const messageEffects = {\n+ list: (query: any) => ({\n+ api: 'messages\/0.1\/messages',\n+ search: {\n+ 'threads[]': query.threadId,\n+ }\n+ })\n+};\n"}]},{"id":"9256290","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+export const RECEIVED_FROM_SOCKET = '[Message] Received from socket';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class ReceivedFromSocket implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: { thread_id: string }) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9256289","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9256288","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/list-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"40","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Operator } from 'rxjs\/Operator';\n+import { Collection, RootModel, Query } from '.\/store';\n+\n+export class ListObservable<T> extends Observable<T> {\n+ constructor(\n+ private collection: Collection,\n+ private query: Query,\n+ private store: Store<RootModel>,\n+ source: Observable<any>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ListObservable<R> {\n+ const store = new ListObservable<R>(this.collection, this.query, this.store, this);\n+ store.operator = operator;\n+ return store;\n+ }\n+\n+ \/*action(actionType: ActionType, params): Promise<void> {\n+ this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ });\n+ \/\/ Run any side effects\n+ return Observable.of(effects[this.ref][actionType](this.key.id, params))\n+ .switchMap(({url, body}) => this.apiHttp.post(url, body))\n+ .do(this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ }))\n+ .mapTo(void 0)\n+ .toPromise();\n+ }*\/\n+\n+}\n+\n"}]},{"id":"9256287","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { DatastoreModule } from '.\/datastore.module';\n+export { Datastore } from '.\/datastore';\n+export { Message } from '.\/message\/message.model';\n+export { Thread } from '.\/thread\/thread.model';\n"}]},{"id":"9256286","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/datastore.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"65","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"65","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Store } from '@ngrx\/store';\n+import { Observable } from 'rxjs\/Observable';\n+import { Collection, RootModel, ListOptions, effects } from '.\/store'\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { ListObservable } from '.\/list-observable';\n+\n+@Injectable()\n+export class Datastore {\n+\n+ constructor(\n+ private store: Store<RootModel>,\n+ private apiHttp: ApiHttp,\n+ \/\/private webSocket: WebSocket,\n+ ) {}\n+\n+ list(collection: Collection, options?: ListOptions) {\n+ \/\/ TODO: QueryObservable\n+ const query = options ? options.query : {};\n+\n+ return Observable.combineLatest([\n+ this.store.select(collection),\n+ Observable.of(effects[collection].list(query))\n+ .switchMap((config) => this.apiHttp.get(config))\n+ .do((data) => this.store.dispatch({\n+ type: 'API_LOAD_SUCCESS',\n+ payload: { collection, query, data }\n+ })),\n+ \/*Observable.of(effects[collection].live(query))\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocket.connect())\n+ .do(data => this.store.dispatch({\n+ type: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { collection, query, data }\n+ })),*\/\n+ ], (state) => state)\n+ .map(source => new ListObservable(collection, query, this.store, source));\n+ }\n+\n+ \/*object(ref: Document|Path) {\n+ const path = Array.isArray(ref) ? ref : [ref];\n+\n+ return Observable.combineLatest([\n+ this.store.pluck(...path)\n+ .distinctUntilChanged(),\n+ Observable.of(effects[path[0]].get())\n+ .filter(x => x)\n+ .switchMap(({url, search}) => this.apiHttp.get(url, {search}))\n+ .do((data) => this.store.dispatch({\n+ action: 'API_LOAD_SUCCESS',\n+ payload: { path, data },\n+ })),\n+ Observable.of(effects[path[0]].live())\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocket())\n+ .do(data => this.store.dispatch({\n+ action: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { path, query, data },\n+ })),\n+ ], (state) => state\n+ ).map(source => new ActionableObservable(path, this.store, source));\n+ }*\/\n+\n+}\n"}]},{"id":"9256285","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/datastore.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"42","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"42","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders, Optional, SkipSelf } from '@angular\/core';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule, AUTH_CONFIG, AuthConfig } from '@shared\/auth';\n+\n+import { Datastore } from '.\/datastore';\n+import { ApiHttp } from '.\/api-http.service';\n+\/\/import { WebSocket } from '.\/web-socket.service';\n+import { rootReducer } from '.\/store';\n+import { DATASTORE_CONFIG, DatastoreConfig } from '.\/datastore.config';\n+\n+@NgModule({\n+ imports: [\n+ AuthModule,\n+ StoreModule.provideStore(rootReducer),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n+ ],\n+ providers: [\n+ Datastore,\n+ ApiHttp,\n+ \/\/WebSocket\n+ ],\n+})\n+export class DatastoreModule {\n+\tstatic initialize(config: DatastoreConfig, authConfig: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: DatastoreModule,\n+ providers: [\n+ { provide: DATASTORE_CONFIG, useValue: config },\n+ { provide: AUTH_CONFIG, useValue: authConfig }\n+ ]\n+ };\n+ }\n+ constructor(@Optional() @SkipSelf() parentModule: DatastoreModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9256284","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/datastore.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const DATASTORE_CONFIG = new OpaqueToken('DatastoreConfig');\n+\n+export interface DatastoreConfig {\n+ apiBaseUrl: string;\n+ ajaxBaseUrl: string;\n+ webSocketUrl: string;\n+}\n"}]},{"id":"9256283","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/datastore\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"67","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"67","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Response, ConnectionBackend, RequestOptions, RequestOptionsArgs,\n+ URLSearchParams, Headers, Http } from '@angular\/http';\n+import { Auth } from '@shared\/auth';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export interface ApiResponse {\n+ result: any;\n+}\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: ConnectionBackend,\n+ defaultOptions: RequestOptions,\n+ private auth: Auth) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(config: any): Observable<Response> {\n+ const url = config.api;\n+ const options = {};\n+ return super.get(`\/api\/${url}`);\n+ \/*Observable.of({url, options})\n+ .do(() => console.log(`get ${url}`))\n+ .withLatestFrom(this.authHeader())\n+ .map(([{url, options}, authHeader]) => {\n+ \/\/return options.header = Object.assign({}, options.headers, authHeader);\n+ return\n+ })\n+ .map((res: Response) => res.json())\n+ .map((body: ApiResponse) => body.result || [])\n+ .catch(this.handleException);*\/\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({userId , authHash}) => \n+ new Headers({ 'Freelancer-Auth-V2': `${userId};${authHash}` })\n+ );\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ let params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9256282","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/cookies\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookiesModule } from '.\/cookies.module';\n+export { Cookies } from '.\/cookies.service';\n"}]},{"id":"9256281","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/cookies\/cookies.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"2","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { CookieService as Cookies } from 'angular2-cookie\/services\/cookies.service';\n+\n"}]},{"id":"9256280","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/cookies\/cookies.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { Cookies } from '.\/cookies.service';\n+\n+@NgModule({\n+ providers: [\n+ Cookies,\n+ ],\n+})\n+export class CookiesModule { }\n"}]},{"id":"9256279","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/auth\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export { AuthModule } from '.\/auth.module';\n+export { Auth } from '.\/auth.service';\n+export { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n"}]},{"id":"9256278","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/auth\/auth.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"35","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"35","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable, Inject } from '@angular\/core';\n+import { Cookies } from '@shared\/cookies';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+import { ReplaySubject } from 'rxjs\/ReplaySubject';\n+import { Operator } from 'rxjs\/Operator';\n+\n+export interface AuthState {\n+ userId: number;\n+ authHash: string;\n+};\n+\n+@Injectable()\n+export class Auth extends ReplaySubject<AuthState> {\n+\n+ constructor(\n+ @Inject(AUTH_CONFIG) private authConfig: AuthConfig,\n+ private cookies: Cookies\n+ ) {\n+ super(1); \/\/ Replay last\n+ this.next({ \n+ userId: parseInt(this.cookies.get(this.authConfig.userIdCookie), 10),\n+ authHash: this.cookies.get(this.authConfig.authHashCookie),\n+ });\n+ }\n+\n+ \/*login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }*\/\n+\n+}\n"}]},{"id":"9256277","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, ModuleWithProviders } from '@angular\/core';\n+import { CookiesModule } from '@shared\/cookies';\n+import { Auth } from '.\/auth.service';\n+import { AUTH_CONFIG, AuthConfig } from '.\/auth.config';\n+\n+@NgModule({\n+ imports: [\n+ CookiesModule\n+ ],\n+ providers: [\n+ Auth,\n+ ],\n+})\n+export class AuthModule {\n+\tstatic initialize(config: AuthConfig): ModuleWithProviders {\n+ return {\n+ ngModule: AuthModule,\n+ providers: [\n+ { provide: AUTH_CONFIG, useValue: config }\n+ ]\n+ };\n+ }\n+}\n+\n"}]},{"id":"9256276","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/shared\/auth\/auth.config.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { OpaqueToken } from '@angular\/core';\n+\n+export const AUTH_CONFIG = new OpaqueToken('AuthConfig');\n+\n+export interface AuthConfig {\n+ baseUrl: string;\n+ authHashCookie: string;\n+ userIdCookie: string;\n+}\n"}]},{"id":"9256275","metadata":{"new:file:size":12288,"new:file:mime-type":"application\/octet-stream","new:binary-phid":"PHID-FILE-thw26x2jfholnxvg6tut"},"oldPath":"webapp\/src\/app\/shared\/auth\/.auth.module.ts.swp","currentPath":"webapp\/src\/app\/shared\/auth\/.auth.module.ts.swp","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"3","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9256274","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+import 'rxjs\/add\/observable\/empty';\n+import 'rxjs\/add\/observable\/combineLatest';\n+import 'rxjs\/add\/observable\/of';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/do';\n+import 'rxjs\/add\/operator\/filter';\n+import 'rxjs\/add\/operator\/combineLatest';\n+import 'rxjs\/add\/operator\/withLatestFrom';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/mapTo';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/toPromise';\n"}]},{"id":"9256273","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9256272","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9256271","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9256270","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9256269","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts",2,"-"],"3":["public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts",3,"-"],"4":["public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts",4,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+ <img src=\"{{thread.avatarUrl}}\" class=\"avatar\">\n+ <div class=\"body\">\n+ <div class=\"body-content-username\">\n+ {{thread.username}}\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{thread.lastMessage}}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9256268","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9256267","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9256266","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9256265","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9256264","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9256263","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9256262","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9256261","metadata":{"line:first":1,"copy:lines":{"47":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",18,"-"],"48":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",19,"-"],"49":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",20,"-"],"50":["public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts",21,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"51","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"51","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CommonModule } from '@angular\/common';\n+import { UiModule } from '@shared\/ui';\n+import { AuthModule } from '@shared\/auth';\n+import { MessagingModule } from '@shared\/messaging';\n+\n+import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { MessageSortPipe } from '.\/pipes\/message-sort.pipe';\n+\n+@NgModule({\n+ imports: [\n+ CommonModule,\n+ UiModule,\n+ MessagingModule,\n+ MessagingInboxRoutingModule,\n+ AuthModule,\n+ ],\n+ declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessageSortPipe,\n+ MessagingInboxComponent,\n+ ]\n+})\n+export class MessagingInboxModule {\n+\n+}\n+\n"}]},{"id":"9256260","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"79","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"79","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component } from '@angular\/core';\n+import { Datastore, ListObservable, Thread, Message } from '@shared-angular\/datastore';\n+import { Subject } from 'rxjs\/Subject';\n+\n+@Component({\n+ selector: 'messaging-inbox',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\"\n+ >\n+ <\/inbox-thread-list>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/messaging-inbox.component.less'],\n+})\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ListObservable<Thread[]>;\n+ threadsLimit = new Subject<number>().startWith(10);\n+ messages: ListObservable<Message[]>;\n+\n+ constructor(\n+ private database: Database,\n+ private router: Router,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.threads = this.database.list('threads');, {\n+ query: {\n+ orderBy: 'time_updated',\n+ limit: threadsLimit,\n+ },\n+ });\n+ this.messages = this.database.list('messages', {\n+ query: {\n+ threads: this.route.data.map(threadId => [threadId])\n+ offset: 0,\n+ limit: 50\n+ }\n+ }));\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.emit(count);\n+ }\n+\n+ sendMessage(message: string) {\n+ this.messages.action({ message });\n+ }\n+\n+ \/*createThread() {\n+ this.threads.push();\n+ }*\/\n+\n+}\n"}]},{"id":"9256259","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"39","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n+}\n"}]},{"id":"9256258","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":["webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { RouterModule, Routes } from '@angular\/router';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxAbtestGuard }\n- from '.\/messaging-inbox-abtest-guard.service';\n-\n-const messagingInboxRoutes: Routes = [\n- {\n- path: '',\n- canActivate: [MessagingInboxAbtestGuard],\n- children: [{\n- path: '',\n- component: MessagingInboxComponent,\n- }],\n- },\n-];\n-\n-@NgModule({\n- imports: [\n- RouterModule.forChild(messagingInboxRoutes),\n- ],\n- providers: [\n- MessagingInboxAbtestGuard,\n- ],\n- exports: [\n- RouterModule,\n- ],\n-})\n-export class MessagingInboxRoutingModule { }\n"}]},{"id":"9256257","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-routing.module.ts","currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { RouterModule, Routes } from '@angular\/router';\n import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n import { MessagingInboxAbtestGuard }\n from '.\/messaging-inbox-abtest-guard.service';\n \n const messagingInboxRoutes: Routes = [\n {\n path: '',\n canActivate: [MessagingInboxAbtestGuard],\n children: [{\n path: '',\n component: MessagingInboxComponent,\n }],\n },\n ];\n \n @NgModule({\n imports: [\n RouterModule.forChild(messagingInboxRoutes),\n ],\n providers: [\n MessagingInboxAbtestGuard,\n ],\n exports: [\n RouterModule,\n ],\n })\n export class MessagingInboxRoutingModule { }\n"}]},{"id":"9256256","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":["webapp\/src\/app\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"16","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"16","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Injectable } from '@angular\/core';\n-\/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n-import { CanActivate } from '@angular\/router';\n-\n-\/\/ interface MessagingInboxParams {\n-\/\/ ng2: string;\n-\/\/ }\n-\n-@Injectable()\n-export class MessagingInboxAbtestGuard implements CanActivate {\n- canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n- \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n- \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n- return true;\n- }\n-}\n"}]},{"id":"9256255","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","currentPath":"webapp\/src\/app\/messaging-inbox\/messaging-inbox-abtest-guard.service.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"16","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"16","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Injectable } from '@angular\/core';\n \/\/ import { ActivatedRouteSnapshot, CanActivate } from '@angular\/router';\n import { CanActivate } from '@angular\/router';\n \n \/\/ interface MessagingInboxParams {\n \/\/ ng2: string;\n \/\/ }\n \n @Injectable()\n export class MessagingInboxAbtestGuard implements CanActivate {\n canActivate(\/* route: ActivatedRouteSnapshot *\/): boolean {\n \/\/ FIXME: type assertion \"unterminated JSX content\" is broken with es-lint\n \/\/ return (<MessagingInboxParams>route.queryParams).ng2 !== undefined;\n return true;\n }\n }\n"}]},{"id":"9256254","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-sort.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Pipe, PipeTransform } from '@angular\/core';\n+\/*\n+ * Sort messages by (message.time_created || message.client_message_id)\n+*\/\n+@Pipe({name: 'messageSort'})\n+export class MessageSortPipe implements PipeTransform {\n+ transform(messages: Array<any>): Array<any> {\n+ return messages.map((message) => message).sort(\n+ (a, b) => this.timeValue(a) - this.timeValue(b)\n+ );\n+ }\n+\n+ timeValue(message: any): number {\n+ const client_message_id = message.client_message_id\n+ ? Number(message.client_message_id) \/ 1000\n+ : 0;\n+ return Number(message.time_created || client_message_id);\n+ }\n+}\n"}]},{"id":"9256253","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9256252","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9256251","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { Message } from '@shared\/datastore';\n+import { Auth } from '@shared\/auth';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private auth: Auth,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return this.message && this.message.from_user &&\n+ this.message.from_user == true; \/\/ FIXMEthis.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9256250","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9256249","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message: EventEmitter<string>;\n+\n+ sendMessage(messageInput: HTMLInputElement) {\n+ this.message.emit(messageInput.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9256248","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9256247","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9256246","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9256245","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9256244","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9256243","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9256242","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9256241","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"29","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"29","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { BrowserModule } from '@angular\/platform-browser';\n+import { NgModule } from '@angular\/core';\n+import { FormsModule } from '@angular\/forms';\n+import { HttpModule } from '@angular\/http';\n+\n+import { AppComponent } from '.\/app.component';\n+import { AppRoutingModule } from '.\/app-routing.module';\n+import { DatastoreModule } from '@shared\/datastore\/datastore.module';\n+\n+import { environment } from '..\/environments\/environment';\n+\n+@NgModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ imports: [\n+ BrowserModule,\n+ FormsModule,\n+ HttpModule,\n+ AppRoutingModule,\n+ DatastoreModule.initialize(\n+ environment.datastoreConfig,\n+ environment.authConfig\n+ )\n+ ],\n+ providers: [],\n+ bootstrap: [AppComponent]\n+})\n+export class AppModule { }\n"}]},{"id":"9256240","metadata":{"line:first":1,"copy:lines":{"2":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",1,"-"],"3":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",2,"-"],"4":["public\/static\/modules\/@shared-angular\/ui\/callout.component.ts",3,"-"]}},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import '.\/rxjs-operators';\n+import { Component } from '@angular\/core';\n+\n+@Component({\n+ selector: 'app-root',\n+ template: `<router-outlet><\/router-outlet>`\n+})\n+export class AppComponent {\n+}\n"}]},{"id":"9256239","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/src\/app\/app.component.spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { TestBed, async } from '@angular\/core\/testing';\n+\n+import { AppComponent } from '.\/app.component';\n+\n+describe('AppComponent', () => {\n+ beforeEach(async(() => {\n+ TestBed.configureTestingModule({\n+ declarations: [\n+ AppComponent\n+ ],\n+ }).compileComponents();\n+ }));\n+\n+ it('should create the app', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app).toBeTruthy();\n+ }));\n+\n+ it(`should have as title 'app works!'`, async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ const app = fixture.debugElement.componentInstance;\n+ expect(app.title).toEqual('app works!');\n+ }));\n+\n+ it('should render title in a h1 tag', async(() => {\n+ const fixture = TestBed.createComponent(AppComponent);\n+ fixture.detectChanges();\n+ const compiled = fixture.debugElement.nativeElement;\n+ expect(compiled.querySelector('h1').textContent).toContain('app works!');\n+ }));\n+});\n"}]},{"id":"9256238","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/app-routing.module.ts","awayPaths":["webapp\/src\/app\/app-routing.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9256237","metadata":{"line:first":8},"oldPath":"public\/static\/modules\/app\/app-routing.module.ts","currentPath":"webapp\/src\/app\/app-routing.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"3","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"28","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { APP_BASE_HREF } from '@angular\/common';\n import { Routes, RouterModule } from '@angular\/router';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n \n const appRoutes: Routes = [\n {\n path: 'messages',\n- loadChildren: 'modules\/messaging-inbox#MessagingInboxModule',\n- },\n- {\n- path: '**',\n- component: AppEmptyComponent,\n- },\n+ loadChildren: '.\/messaging-inbox\/messaging-inbox.module#MessagingInboxModule',\n+ }\n ];\n \n @NgModule({\n imports: [\n RouterModule.forRoot(appRoutes),\n ],\n- providers: [\n- { provide: APP_BASE_HREF, useValue: '\/' },\n- ],\n exports: [\n RouterModule,\n ],\n })\n export class AppRoutingModule {}\n+\n"}]},{"id":"9256236","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/protractor.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Protractor configuration file, see link for more information\n+\/\/ https:\/\/github.com\/angular\/protractor\/blob\/master\/lib\/config.ts\n+\n+const { SpecReporter } = require('jasmine-spec-reporter');\n+\n+exports.config = {\n+ allScriptsTimeout: 11000,\n+ specs: [\n+ '.\/e2e\/**\/*.e2e-spec.ts'\n+ ],\n+ capabilities: {\n+ 'browserName': 'chrome'\n+ },\n+ directConnect: true,\n+ baseUrl: 'http:\/\/localhost:4200\/',\n+ framework: 'jasmine',\n+ jasmineNodeOpts: {\n+ showColors: true,\n+ defaultTimeoutInterval: 30000,\n+ print: function() {}\n+ },\n+ beforeLaunch: function() {\n+ require('ts-node').register({\n+ project: 'e2e\/tsconfig.e2e.json'\n+ });\n+ },\n+ onPrepare() {\n+ jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));\n+ }\n+};\n"}]},{"id":"9256235","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/package.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"53","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"name\": \"gaf-webapp\",\n+ \"version\": \"0.0.0\",\n+ \"license\": \"MIT\",\n+ \"scripts\": {\n+ \"ng\": \"ng\",\n+ \"start\": \"ng serve --port 4201\",\n+ \"build\": \"ng build\",\n+ \"build:prod\": \"ng build --prod --aot\",\n+ \"test\": \"ng test\",\n+ \"lint\": \"ng lint\",\n+ \"e2e\": \"ng e2e\"\n+ },\n+ \"private\": true,\n+ \"dependencies\": {\n+ \"@angular\/common\": \"^2.4.0\",\n+ \"@angular\/compiler\": \"^2.4.0\",\n+ \"@angular\/core\": \"^2.4.0\",\n+ \"@angular\/forms\": \"^2.4.0\",\n+ \"@angular\/http\": \"^2.4.0\",\n+ \"@angular\/platform-browser\": \"^2.4.0\",\n+ \"@angular\/platform-browser-dynamic\": \"^2.4.0\",\n+ \"@angular\/router\": \"^3.4.0\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n+ \"angular2-cookie\": \"^1.2.6\",\n+ \"core-js\": \"^2.4.1\",\n+ \"ngrx-store-freeze\": \"^0.1.9\",\n+ \"rxjs\": \"^5.1.0\",\n+ \"zone.js\": \"^0.7.6\"\n+ },\n+ \"devDependencies\": {\n+ \"@angular\/cli\": \"1.0.0-rc.0\",\n+ \"@angular\/compiler-cli\": \"^2.4.0\",\n+ \"@types\/jasmine\": \"2.5.38\",\n+ \"@types\/node\": \"~6.0.60\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n+ \"codelyzer\": \"~2.0.0\",\n+ \"jasmine-core\": \"~2.5.2\",\n+ \"jasmine-spec-reporter\": \"~3.2.0\",\n+ \"karma\": \"~1.4.1\",\n+ \"karma-chrome-launcher\": \"~2.0.0\",\n+ \"karma-cli\": \"~1.0.1\",\n+ \"karma-coverage-istanbul-reporter\": \"^0.2.0\",\n+ \"karma-jasmine\": \"~1.1.0\",\n+ \"karma-jasmine-html-reporter\": \"^0.2.2\",\n+ \"protractor\": \"~5.1.0\",\n+ \"ts-node\": \"~2.0.0\",\n+ \"tslint\": \"~4.4.2\",\n+ \"typescript\": \"^2.1.6\"\n+ }\n+}\n"}]},{"id":"9256234","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/karma.conf.js","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ Karma configuration file, see link for more information\n+\/\/ https:\/\/karma-runner.github.io\/0.13\/config\/configuration-file.html\n+\n+module.exports = function (config) {\n+ config.set({\n+ basePath: '',\n+ frameworks: ['jasmine', '@angular\/cli'],\n+ plugins: [\n+ require('karma-jasmine'),\n+ require('karma-chrome-launcher'),\n+ require('karma-jasmine-html-reporter'),\n+ require('karma-coverage-istanbul-reporter'),\n+ require('@angular\/cli\/plugins\/karma')\n+ ],\n+ client:{\n+ clearContext: false \/\/ leave Jasmine Spec Runner output visible in browser\n+ },\n+ files: [\n+ { pattern: '.\/src\/test.ts', watched: false }\n+ ],\n+ preprocessors: {\n+ '.\/src\/test.ts': ['@angular\/cli']\n+ },\n+ mime: {\n+ 'text\/x-typescript': ['ts','tsx']\n+ },\n+ coverageIstanbulReporter: {\n+ reports: [ 'html', 'lcovonly' ],\n+ fixWebpackSourcePaths: true\n+ },\n+ angularCli: {\n+ environment: 'dev'\n+ },\n+ reporters: config.angularCli && config.angularCli.codeCoverage\n+ ? ['progress', 'coverage-istanbul']\n+ : ['progress', 'kjhtml'],\n+ port: 9876,\n+ colors: true,\n+ logLevel: config.LOG_INFO,\n+ autoWatch: true,\n+ browsers: ['Chrome'],\n+ singleRun: false\n+ });\n+};\n"}]},{"id":"9256233","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/tsconfig.e2e.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"compilerOptions\": {\n+ \"sourceMap\": true,\n+ \"declaration\": false,\n+ \"moduleResolution\": \"node\",\n+ \"emitDecoratorMetadata\": true,\n+ \"experimentalDecorators\": true,\n+ \"lib\": [\n+ \"es2016\"\n+ ],\n+ \"outDir\": \"..\/dist\/out-tsc-e2e\",\n+ \"module\": \"commonjs\",\n+ \"target\": \"es6\",\n+ \"types\":[\n+ \"jasmine\",\n+ \"node\"\n+ ]\n+ }\n+}\n"}]},{"id":"9256232","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.po.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { browser, element, by } from 'protractor';\n+\n+export class WebappPage {\n+ navigateTo() {\n+ return browser.get('\/');\n+ }\n+\n+ getParagraphText() {\n+ return element(by.css('app-root h1')).getText();\n+ }\n+}\n"}]},{"id":"9256231","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/e2e\/app.e2e-spec.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { WebappPage } from '.\/app.po';\n+\n+describe('webapp App', () => {\n+ let page: WebappPage;\n+\n+ beforeEach(() => {\n+ page = new WebappPage();\n+ });\n+\n+ it('should display message saying app works', () => {\n+ page.navigateTo();\n+ expect(page.getParagraphText()).toEqual('app works!');\n+ });\n+});\n"}]},{"id":"9256230","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/README.md","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Webapp\n+\n+This project was generated with [Angular CLI](https:\/\/github.com\/angular\/angular-cli) version 1.0.0-rc.0.\n+\n+## Development server\n+Run `ng serve` for a dev server. Navigate to `http:\/\/localhost:4200\/`. The app will automatically reload if you change any of the source files.\n+\n+## Code scaffolding\n+\n+Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive\/pipe\/service\/class\/module`.\n+\n+## Build\n+\n+Run `ng build` to build the project. The build artifacts will be stored in the `dist\/` directory. Use the `-prod` flag for a production build.\n+\n+## Running unit tests\n+\n+Run `ng test` to execute the unit tests via [Karma](https:\/\/karma-runner.github.io).\n+\n+## Running end-to-end tests\n+\n+Run `ng e2e` to execute the end-to-end tests via [Protractor](http:\/\/www.protractortest.org\/).\n+Before running the tests make sure you are serving the app via `ng serve`.\n+\n+## Further help\n+\n+To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https:\/\/github.com\/angular\/angular-cli\/blob\/master\/README.md).\n"}]},{"id":"9256229","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.gitignore","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"41","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"41","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# See http:\/\/help.github.com\/ignore-files\/ for more about ignoring files.\n+\n+# compiled output\n+\/dist\n+\/tmp\n+\n+# dependencies\n+\/node_modules\n+\n+# IDEs and editors\n+\/.idea\n+.project\n+.classpath\n+.c9\/\n+*.launch\n+.settings\/\n+*.sublime-workspace\n+\n+# IDE - VSCode\n+.vscode\/*\n+!.vscode\/settings.json\n+!.vscode\/tasks.json\n+!.vscode\/launch.json\n+!.vscode\/extensions.json\n+\n+# misc\n+\/.sass-cache\n+\/connect.lock\n+\/coverage\/*\n+\/libpeerconnection.log\n+npm-debug.log\n+testem.log\n+\/typings\n+\n+# e2e\n+\/e2e\/*.js\n+\/e2e\/*.map\n+\n+#System Files\n+.DS_Store\n+Thumbs.db\n"}]},{"id":"9256228","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.editorconfig","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+# Editor configuration, see http:\/\/editorconfig.org\n+root = true\n+\n+[*]\n+charset = utf-8\n+indent_style = space\n+indent_size = 2\n+insert_final_newline = true\n+trim_trailing_whitespace = true\n+\n+[*.md]\n+max_line_length = off\n+trim_trailing_whitespace = false\n"}]},{"id":"9256227","metadata":{"line:first":1},"oldPath":null,"currentPath":"webapp\/.angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"webapp\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]},{"id":"9256226","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9256225","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9256224","metadata":[],"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"33","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"33","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-{\n- \"compilerOptions\": {\n- \"emitDecoratorMetadata\": true,\n- \"experimentalDecorators\": true,\n- \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n- \"noEmit\": true,\n- \"lib\": [\"es6\", \"dom\"],\n- \"noImplicitAny\": true,\n- \"strictNullChecks\": true,\n- \"skipLibCheck\": true,\n- \"target\": \"es5\",\n- \"baseUrl\": \".\",\n- \"paths\": {\n- \"@shared-angular\/*.ts\": [\n- \"@shared-angular\/*\/index.ts\"\n- ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n- ]\n- }\n- },\n- \"include\": [\n- \"**\/*\"\n- ],\n- \"exclude\": [\n- \"**\/*.spec.ts\"\n- ],\n- \"angularCompilerOptions\": {\n- \"genDir\": \"..\/.modules\",\n- \"skipMetadataEmit\" : true\n- }\n-}\n"}]},{"id":"9256223","metadata":[],"oldPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","currentPath":"public\/static\/modules\/navigation\/pinky\/templates\/notificationItem\/notify-item-anonymous.htm","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9256222","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-list.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9256221","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9256220","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","awayPaths":["public\/static\/modules\/messaging\/thread-item.component.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"13","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"13","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component, Input } from '@angular\/core';\n-import { Thread } from '@shared-angular\/core';\n-\n-@Component({\n- selector: 'thread-item',\n- template: `\n- <div>{{ thread | json }}<div>\n- `,\n- styleUrls: ['.\/thread-item.component.less'],\n-})\n-export class ThreadItemComponent {\n- @Input() thread: Thread;\n-}\n"}]},{"id":"9256219","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.ts","currentPath":"public\/static\/modules\/messaging\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"13","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"13","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Input } from '@angular\/core';\n import { Thread } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-item',\n template: `\n <div>{{ thread | json }}<div>\n `,\n styleUrls: ['.\/thread-item.component.less'],\n })\n export class ThreadItemComponent {\n @Input() thread: Thread;\n }\n"}]},{"id":"9256218","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","awayPaths":["public\/static\/modules\/messaging\/messaging.module.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"22","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"22","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { ThreadListComponent } from '.\/thread-list.component';\n-import { ThreadItemComponent } from '.\/thread-item.component';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- ],\n- declarations: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- exports: [\n- ThreadListComponent,\n- ThreadItemComponent,\n- ],\n- \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n-})\n-export class MessagingModule {}\n"}]},{"id":"9256217","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/messaging.module.ts","currentPath":"public\/static\/modules\/messaging\/messaging.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"22","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n import { ThreadListComponent } from '.\/thread-list.component';\n import { ThreadItemComponent } from '.\/thread-item.component';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n ],\n declarations: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n exports: [\n ThreadListComponent,\n ThreadItemComponent,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class MessagingModule {}\n"}]},{"id":"9256216","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","awayPaths":["public\/static\/modules\/messaging\/index.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging.module';\n"}]},{"id":"9256215","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/index.ts","currentPath":"public\/static\/modules\/messaging\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/messaging.module';\n"}]},{"id":"9256214","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"21","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"21","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { UiModule } from '@shared-angular\/ui';\n-import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n-import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- UiModule,\n- MessagingModule,\n- MessagingInboxRoutingModule,\n- ],\n- declarations: [\n- MessagingInboxComponent,\n- ],\n-})\n-export class MessagingInboxModule {\n-\n-}\n"}]},{"id":"9256213","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"8","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n- styleUrls: ['.\/messaging-inbox.component.less'],\n-})\n-export class MessagingInboxComponent {}\n"}]},{"id":"9256212","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n-}\n"}]},{"id":"9256211","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9256210","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/index.ts","currentPath":"public\/static\/modules\/messaging-inbox\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/messaging-inbox.module';\n"}]},{"id":"9256209","metadata":[],"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export const cookieBase = '';\n-\n-export const flnBillingBaseUrl = '';\n"}]},{"id":"9256208","metadata":[],"oldPath":"public\/static\/modules\/app\/environment\/environment.ts","currentPath":"public\/static\/modules\/app\/environment\/environment.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"7","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"7","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ The file for the current environment will overwrite this one during build\n-\/\/ Different environments can be found in environments\/environment.{dev|prod}.ts\n-\/\/ The build system defaults to the dev environment\n-\n-export const environment = {\n- production: true,\n-};\n"}]},{"id":"9256207","metadata":[],"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"29","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"29","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule } from '@angular\/core';\n-import { BrowserModule } from '@angular\/platform-browser';\n-import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n-import { AppComponent } from '.\/app.component';\n-import { AppEmptyComponent } from '.\/app-empty.component';\n-import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n-\n-@NgModule({\n- imports: [\n- BrowserModule,\n- CoreModule,\n- AppRoutingModule,\n- ],\n- declarations: [\n- AppComponent,\n- AppEmptyComponent,\n- ],\n- providers: [\n- { provide: SharedConfig, useValue: appConfig },\n- ],\n- exports: [\n- AppComponent,\n- ],\n- bootstrap: [AppComponent],\n-})\n-export class AppModule {\n-}\n"}]},{"id":"9256206","metadata":[],"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"20","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"20","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n-\n-const appConfig = {\n- apiBaseUrl: '\/api',\n- authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n- facebookAppId: '',\n- gafBaseUrl: '',\n- userIdCookie: `${cookieBase}_USER_ID`,\n- defaultAvatarUrl: '\/img\/unknown.png',\n- languageCookie: `${cookieBase}_LANGUAGE`,\n- languageCookieDomain: cookieBase,\n- languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n- flnBillingBaseUrl,\n- translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n- lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n-};\n-\n-export { appConfig };\n"}]},{"id":"9256205","metadata":[],"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"10","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"10","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n-})\n-export class AppComponent {\n-}\n"}]},{"id":"9256204","metadata":[],"oldPath":"public\/static\/modules\/app\/app-empty.component.ts","currentPath":"public\/static\/modules\/app\/app-empty.component.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n-\n-@Component({\n- template: '<span id=\"empty\"><\/span>',\n-})\n-export class AppEmptyComponent { }\n"}]},{"id":"9256203","metadata":[],"oldPath":"public\/static\/modules\/app\/.eslintrc","currentPath":"public\/static\/modules\/app\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9256202","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9256201","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9256200","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9256199","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9256198","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9256197","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9256196","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/.eslintrc","currentPath":"public\/static\/modules\/@shared-angular\/.eslintrc","awayPaths":[],"oldProperties":{"unix:filemode":"120000"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"1","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-..\/.eslintrc_ts\n\\ No newline at end of file\n"}]},{"id":"9256195","metadata":[],"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"0","delLines":"25","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"371","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n- {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n- !app_page!}}\n-\n- {{?app_page?\n- <base href=\"\/\" \/>\n- ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n- !app_page!}}\n-\n <\/head>\n <body data-role=\"page\">\n \n- {{!app_page!\n-\n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n- !app_page!}}\n-\n- {{?app_page?\n- <fl-app><\/fl-app>\n- <!-- app-server-environment are environment vars, NOT a mechanism to pass\n- data between the server & the client. -->\n- <!-- All app environment vars MUST BE static and MUST NOT change\n- between pages and\/or users or things would break badly -->\n- {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n- {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n- {{<systemjs_module('app')>}}\n- {{<systemjs_module('{{(app_page)}}')>}}\n- ?app_page?}}\n-\n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9256194","metadata":{"line:first":33},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"10","delLines":"27","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1236","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n- \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n+ \"postinstall\": \"npm run jspm:configure && npm run jspm:update && cd webapp && yarn\"\n },\n \"dependencies\": {\n- \"@angular\/common\": \"2.2.4\",\n- \"@angular\/compiler\": \"2.2.4\",\n- \"@angular\/compiler-cli\": \"2.2.4\",\n- \"@angular\/core\": \"2.2.4\",\n- \"@angular\/platform-browser\": \"2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n- \"@angular\/router\": \"3.2.4\",\n- \"@types\/jasmine\": \"^2.2.33\",\n- \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n- \"tslint\": \"^3.15.1\",\n- \"typescript\": \"~2.0.10\",\n- \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n+ \"yarn\": \"^0.21.3\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n- \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n- \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n- \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n- \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n- \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n- \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n- \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n- \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n- \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9256193","metadata":{"line:first":1},"oldPath":null,"currentPath":".nvmrc","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"1","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+6.10\n"}]},{"id":"9256192","metadata":{"line:first":1},"oldPath":null,"currentPath":".angular-cli.json","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+{\n+ \"$schema\": \".\/node_modules\/@angular\/cli\/lib\/config\/schema.json\",\n+ \"project\": {\n+ \"name\": \"gaf-app\"\n+ },\n+ \"apps\": [\n+ {\n+ \"root\": \"src\",\n+ \"outDir\": \"dist\",\n+ \"assets\": [\n+ \"assets\",\n+ \"favicon.ico\"\n+ ],\n+ \"index\": \"index.html\",\n+ \"main\": \"main.ts\",\n+ \"polyfills\": \"polyfills.ts\",\n+ \"test\": \"test.ts\",\n+ \"tsconfig\": \"tsconfig.app.json\",\n+ \"testTsconfig\": \"tsconfig.spec.json\",\n+ \"prefix\": \"app\",\n+ \"styles\": [\n+ \"styles.css\"\n+ ],\n+ \"scripts\": [],\n+ \"environmentSource\": \"environments\/environment.ts\",\n+ \"environments\": {\n+ \"dev\": \"environments\/environment.ts\",\n+ \"prod\": \"environments\/environment.prod.ts\"\n+ }\n+ }\n+ ],\n+ \"e2e\": {\n+ \"protractor\": {\n+ \"config\": \".\/protractor.conf.js\"\n+ }\n+ },\n+ \"lint\": [\n+ {\n+ \"project\": \"src\/tsconfig.app.json\"\n+ },\n+ {\n+ \"project\": \"src\/tsconfig.spec.json\"\n+ },\n+ {\n+ \"project\": \"e2e\/tsconfig.e2e.json\"\n+ }\n+ ],\n+ \"test\": {\n+ \"karma\": {\n+ \"config\": \".\/karma.conf.js\"\n+ }\n+ },\n+ \"defaults\": {\n+ \"styleExt\": \"css\",\n+ \"component\": {}\n+ }\n+}\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"0e1bd7afab43864565bf213fb4aa48c5bb0205fc":{"commit":"0e1bd7afab43864565bf213fb4aa48c5bb0205fc","tree":"c9c493b532c34f12858cae5cfa7c0d955c9f33d0","parents":["1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e"],"time":"1488468438","author":"Laurent Goudet","summary":"foo","message":"foo","authorEmail":"laurent@freelancer.com"},"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e":{"commit":"1cd4200d1d9f19606bcd9e5b514b43a33dc41b6e","tree":"2a3952608299d5bc1b6a0f4d73f6a261f2c33832","parents":["4787bdb9905e76de8bf21884433cce36e4f4ed76"],"time":"1488465173","author":"Laurent Goudet","summary":"yay","message":"yay","authorEmail":"laurent@freelancer.com"},"4787bdb9905e76de8bf21884433cce36e4f4ed76":{"commit":"4787bdb9905e76de8bf21884433cce36e4f4ed76","tree":"d522f82b45d3c2d51c6249d23b8541e3b3a24c19","parents":["8b09c74cf24f954d4e29ebcea5898ff981c2b867"],"time":"1488444786","author":"Laurent Goudet","summary":"re-bootstrap using angular-cli","message":"re-bootstrap using angular-cli","authorEmail":"laurent@freelancer.com"},"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"694531":{"id":"694531","revisionID":"56417","dateCreated":"1487694613","dateModified":"1487694616","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-ngrx","bookmark":null,"creationMethod":"arc","description":" - WIP","unitStatus":"1","lintStatus":"4","changes":[{"id":"9224653","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9224652","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9224651","metadata":{"line:first":6},"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"7","delLines":"4","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"33","newLength":"36","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"compilerOptions\": {\n \"emitDecoratorMetadata\": true,\n \"experimentalDecorators\": true,\n \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n+ \"module\": \"system\",\n \"noEmit\": true,\n \"lib\": [\"es6\", \"dom\"],\n \"noImplicitAny\": true,\n \"strictNullChecks\": true,\n \"skipLibCheck\": true,\n \"target\": \"es5\",\n \"baseUrl\": \".\",\n \"paths\": {\n- \"@shared-angular\/*.ts\": [\n+ \"@shared-angular\/*\": [\n \"@shared-angular\/*\/index.ts\"\n ],\n- \"server-data\/app-server-environment\": [\n- \"app\/mock-app-server-environment\"\n+ \"app\/*\": [\n+ \"app\/*\"\n+ ],\n+ \"app\/server-environment\": [\n+ \"app\/mock-server-environment\"\n ]\n }\n },\n \"include\": [\n \"**\/*\"\n ],\n \"exclude\": [\n \"**\/*.spec.ts\"\n ],\n \"angularCompilerOptions\": {\n \"genDir\": \"..\/.modules\",\n \"skipMetadataEmit\" : true\n }\n }\n"}]},{"id":"9224650","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9224649","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9224648","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9224647","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9224646","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+ <img src=\"{{thread.avatarUrl}}\" class=\"avatar\">\n+ <div class=\"body\">\n+ <div class=\"body-content-username\">\n+ {{thread.username}}\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{thread.lastMessage}}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9224645","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9224644","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9224643","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9224642","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9224641","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9224640","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9224639","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9224638","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"33","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"21","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n+import { ConfigService } from '@shared-angular\/core';\n import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+\n import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { MessageSortPipe } from '.\/pipes\/message-sort.pipe';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n MessagingModule,\n MessagingInboxRoutingModule,\n ],\n declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessageSortPipe,\n MessagingInboxComponent,\n ],\n+ providers: [\n+ ConfigService,\n+ ]\n })\n export class MessagingInboxModule {\n \n }\n+\n"}]},{"id":"9224637","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"72","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"8","newLength":"78","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component } from '@angular\/core';\n+import { Database, ActionableObservable, Thread, Message } from '@shared-angular\/core';\n+import { Subject } from 'rxjs\/Subject';\n \n @Component({\n selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\"\n+ >\n+ <\/inbox-thread-list>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>\n+ `,\n styleUrls: ['.\/messaging-inbox.component.less'],\n })\n-export class MessagingInboxComponent {}\n+export class MessagingInboxComponent implements OnInit {\n+ threads: ActionableObservable<Thread[]>;\n+ threadsLimit = new Subject<number>().startWith(10);\n+ messages: ActionableObservable<Message[]>;\n+\n+ constructor(\n+ private database: Database,\n+ private router: Router,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.threads = this.database.list('threads', {\n+ query: {\n+ orderBy: 'time_updated',\n+ limit: threadsLimit,\n+ },\n+ });\n+ this.messages = this.route.data\n+ .map(threadId => this.database.list(['messages', threadId], {\n+ query: {\n+ limit: 50,\n+ },\n+ }));\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.emit(count);\n+ }\n+\n+ sendMessage(message: string) {\n+ this.messages.action({ message });\n+ }\n+\n+ \/*createThread() {\n+ this.threads.push();\n+ }*\/\n+\n+}\n"}]},{"id":"9224636","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"38","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n }\n"}]},{"id":"9224635","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9224634","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-sort.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Pipe, PipeTransform } from '@angular\/core';\n+\/*\n+ * Sort messages by (message.time_created || message.client_message_id)\n+*\/\n+@Pipe({name: 'messageSort'})\n+export class MessageSortPipe implements PipeTransform {\n+ transform(messages: Array<any>): Array<any> {\n+ return messages.map((message) => message).sort(\n+ (a, b) => this.timeValue(a) - this.timeValue(b)\n+ );\n+ }\n+\n+ timeValue(message: any): number {\n+ const client_message_id = message.client_message_id\n+ ? Number(message.client_message_id) \/ 1000\n+ : 0;\n+ return Number(message.time_created || client_message_id);\n+ }\n+}\n"}]},{"id":"9224633","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9224632","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9224631","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { ConfigService } from '@shared-angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private configService: ConfigService,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return this.message && this.message.from_user &&\n+ this.message.from_user == this.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9224630","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9224629","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message: EventEmitter<string>;\n+\n+ sendMessage(messageInput: HTMLInputElement) {\n+ this.message.emit(messageInput.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9224628","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9224627","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9224626","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9224625","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9224624","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9224623","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9224622","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9224621","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/publish';\n"}]},{"id":"9224620","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const cookieBase = '';\n-\n+export const notifyServer = '';\n export const flnBillingBaseUrl = '';\n"}]},{"id":"9224619","metadata":[],"oldPath":null,"currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":["public\/static\/modules\/app\/config.ts"],"oldProperties":[],"newProperties":[],"type":"4","fileType":"1","commitHash":null,"addLines":"0","delLines":"0","hunks":[]},{"id":"9224618","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/config.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"6","fileType":"1","commitHash":null,"addLines":"12","delLines":"5","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"20","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n+import { OpaqueToken } from '@angular\/core'; \n \n-const appConfig = {\n+import {\n+ cookieBase,\n+ flnBillingBaseUrl,\n+ notifyServer,\n+} from 'app\/server-environment';\n+\n+export const APP_CONFIG = new OpaqueToken('config');\n+\n+export const appConfig = {\n apiBaseUrl: '\/api',\n authBaseUrl: '\/auth',\n- authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n+ authHashCookie: `${cookieBase}_AUTH_HASH_V2`,\n facebookAppId: '',\n gafBaseUrl: '',\n userIdCookie: `${cookieBase}_USER_ID`,\n defaultAvatarUrl: '\/img\/unknown.png',\n languageCookie: `${cookieBase}_LANGUAGE`,\n languageCookieDomain: cookieBase,\n languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n flnBillingBaseUrl,\n+ notifyServer,\n translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n };\n \n-export { appConfig };\n"}]},{"id":"9224617","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"29","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { BrowserModule } from '@angular\/platform-browser';\n import { CoreModule } from '@shared-angular\/core';\n-import { SharedConfig } from '@shared-angular\/config';\n+import { HttpModule } from '@angular\/http';\n import { AppComponent } from '.\/app.component';\n import { AppEmptyComponent } from '.\/app-empty.component';\n import { AppRoutingModule } from '.\/app-routing.module';\n-import { appConfig } from '.\/app.config';\n+import { AppConfig, appConfig } from '.\/app.config';\n \n @NgModule({\n imports: [\n BrowserModule,\n CoreModule,\n+ HttpModule,\n AppRoutingModule,\n ],\n declarations: [\n AppComponent,\n AppEmptyComponent,\n ],\n providers: [\n- { provide: SharedConfig, useValue: appConfig },\n+ { provide: AppConfig, useValue: appConfig },\n ],\n exports: [\n AppComponent,\n ],\n bootstrap: [AppComponent],\n })\n export class AppModule {\n }\n"}]},{"id":"9224616","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"4","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n+import '.\/rxjs-operators';\n+import { Component, Inject, ViewEncapsulation } from '@angular\/core';\n+import { StateModel, RootReducer } from '@shared-angular\/core';\n \n @Component({\n selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n+ template: `<router-outlet><\/router-outlet>`,\n })\n export class AppComponent {\n+ constructor() {}\n }\n"}]},{"id":"9224615","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrolling } from '.\/infinite-scrolling';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrolling,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9224614","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9224613","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/infinite-scrolling.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver; \n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root,\n+ treshold,\n+ });\n+ this.observer.observe(this.el);\n+ return () => instance.disconnet();\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9224612","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9224611","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9224610","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/web-socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"92","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"92","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+import { APP_CONFIG } from 'app\/config';\n+\n+\/\/ TODO: use \n+\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();\n+\n+@Injectable()\n+export class WebSocketService {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ \n+ constructor(private appConfig: APP_CONFIG) {}\n+\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const url = this.appConfig.getSocketUrl();\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ const ws: any = new SockJS(this.appConfig.notifyUrl);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable).asObservable();\n+ }\n+}\n+\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n"}]},{"id":"9224609","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9224608","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"37","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"37","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { ActionReducer } from '@ngrx\/store';\n+import { Thread } from '.\/thread.model';\n+import * as thread from '.\/thread.actions';\n+import * as message from '..\/message.actions';\n+\n+const THIS_DOCUMENT: Document = 'threads';\n+\n+export const threadsReducer: ActionReducer<Entities<Thread>> =\n+ (state = {}, action: thread.Actions) => {\n+ if (action.path[0] = THIS_DOCUMENT) {\n+ switch (action.type) {\n+ case 'API_LOAD_SUCCESS':\n+ action.payload.reduce((threads, thread) => {\n+ threads[thread.id] = thread;\n+ }, {});\n+ return Object.assign({}, state, threads);\n+ \n+ case 'WEBSOCKET_LOAD_SUCCESS':\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);\n+ \n+ default:\n+ return state;\n+ }\n+ } else {\n+ return state;\n+ }\n+};\n+\n"}]},{"id":"9224607","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"216","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"216","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ contest?: ThreadContest;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+export interface ThreadUser {\n+ status: {\n+ payment_verified: null;\n+ identity_verified: null;\n+ email_verified: true;\n+ deposit_made: null;\n+ phone_verified: null;\n+ facebook_connected: null;\n+ profile_complete: null\n+ };\n+ avatar_large: string; \/\/ \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ avatar_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ spam_profile: null;\n+ search_languages: null;\n+ support_status: null;\n+ last_name: null;\n+ suspended: null;\n+ primary_language: en;\n+ timezone: {\n+ country: string; \/\/ AU;\n+ offset: 10;\n+ id: 234;\n+ timezone: string; \/\/ Australia\/NSW\n+ };\n+ membership_package: null;\n+ qualifications: null;\n+ id: 8239778;\n+ badges: null;\n+ hourly_rate: null;\n+ responsiveness: null;\n+ first_name: null;\n+ display_name: null;\n+ tagline: null;\n+ account_balances: null;\n+ role: employer;\n+ location: {\n+ administrative_area: null;\n+ city: asdfasdf;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: string; \/\/ United States\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ closed: false;\n+ email: null;\n+ username: string;\n+ is_local: null;\n+ endorsements: null;\n+ jobs: null;\n+ employer_reputation: null;\n+ registration_date: 1377186231;\n+ is_active: null;\n+ avatar_large_cdn: string; \/\/ \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg;\n+ profile_description: null;\n+ limited_account: false;\n+ portfolio_count: null;\n+ preferred_freelancer: null;\n+ true_location: null;\n+ primary_currency: {\n+ code: string; \/\/ AUD \n+ name: string; \/\/ Australian Dollar\n+ country: string; \/\/ AU\n+ sign: string; \/\/ $\n+ exchange_rate: 0.740923;\n+ id: 3,\n+ };\n+ mobile_tracking: null;\n+ chosen_role: string; \/\/ both\n+ reputation: null;\n+ avatar: string; \/\/ ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg;\n+ cover_image: null;\n+ force_verify: null;\n+}\n+\n+export interface ThreadProject {\n+ hidebids: false;\n+ files: null;\n+ attachments: null;\n+ bidperiod: 7;\n+ currency: {\n+ code: string; \/\/ USD\n+ name: string; \/\/ US Dollar\n+ country: string; \/\/ US\n+ sign: string; \/\/ $\n+ exchange_rate: 1;\n+ id: 1;\n+ };\n+ featured: true;\n+ preview_description: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as;\n+ upgrades: {\n+ active_prepaid_milestone: null;\n+ NDA: false;\n+ assisted: null;\n+ urgent: false;\n+ featured: true;\n+ nonpublic: false;\n+ fulltime: false;\n+ qualified: false;\n+ sealed: false\n+ };\n+ invited_freelancers: null;\n+ id: 4911007;\n+ active_prepaid_milestone: null;\n+ negotiated: false;\n+ title: string; \/\/ Build a Website asd fasdfasdfasdfasdfasdf;\n+ assisted: null;\n+ submitdate: 1419310395;\n+ nda_signatures: null;\n+ nonpublic: false;\n+ location: {\n+ administrative_area: null;\n+ city: null;\n+ country: {\n+ highres_flag_url: null;\n+ code: null;\n+ name: null;\n+ flag_url_cdn: null;\n+ highres_flag_url_cdn: null;\n+ flag_url: null\n+ };\n+ vicinity: null;\n+ longitude: null;\n+ full_address: null;\n+ latitude: null\n+ };\n+ recommended_freelancers: null;\n+ type: fixed;\n+ hireme: false;\n+ owner_id: 8239506;\n+ status: active;\n+ jobs: null;\n+ description: null;\n+ can_post_review: null;\n+ deleted: false;\n+ qualifications: null;\n+ time_free_bids_expire: null;\n+ frontend_project_status: open;\n+ hourly_project_info: null;\n+ true_location: null;\n+ sub_status: null;\n+ time_updated: null;\n+ language: en;\n+ seo_url: string; \/\/ PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf;\n+ urgent: false;\n+ user_distance: null;\n+ local: false;\n+ time_submitted: 1419310395;\n+ budget: {\n+ currency_id: null;\n+ minimum: 250;\n+ maximum: 750;\n+ project_type: null;\n+ name: null\n+ };\n+ negotiated_bid: null;\n+ bid_stats: {\n+ bid_count: 0;\n+ bid_avg: null\n+ };\n+ hireme_initial_bid: null;\n+ from_user_location: null;\n+};\n"}]},{"id":"9224606","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/thread\/thread.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const threadEffects = {\n+ get: () => ({\n+ url: '\/messages\/0.1\/threads\/',\n+ options: {\n+ search: new URLSearchParams({\n+ unread_count: true,\n+ last_message: true,\n+ message_details: true,\n+ context_details: true,\n+ user_details: true,\n+ }),\n+ },\n+ }),\n+ sendMessage: (threadId, {message}) => ({\n+ url: '\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ body: {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ \/\/ from_user: this.selfId,??\n+ },\n+ }),\n+};\n+\n"}]},{"id":"9224605","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/thread\/thread.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Thread] Load';\n+export const LOAD_SUCCESS = '[Thread] Load Success';\n+export const LOAD_FAIL = '[Thread] Load Fail';\n+export const SEND_MESSAGE = '[Thread] Send Message';\n+export const SEND_MESSAGE_SUCCESS = '[Thread] Send Message Success';\n+export const SEND_MESSAGE_FAIL = '[Thread] Send Message Fail';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Thread[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE;\n+\n+ constructor(public payload: {\n+ message: string,\n+ threadId: number\n+ }) { }\n+}\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE_SUCCESS;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class SendMessageFail implements Action {\n+ type = SEND_MESSAGE_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction\n+ | SendMessageAction\n+ | SendMessageSuccess\n+ | SendMessageFail;\n+\n"}]},{"id":"9224604","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/reducers.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+\n+import { Slice } from '.\/model';\n+import { threadReducer } from '.\/thread.reducer';\n+import { messageReducer } from '.\/message.reducer';\n+\n+import { environment } from '..\/..\/app\/environment';\n+\n+export interface ActionReducer<T> {\n+ (state: T, action: Action): T;\n+}\n+\n+export const reducers: {\n+ [Slice]: ActionReducer<Slice>\n+} = {\n+ thread: threadReducer,\n+ message: messageReducer,\n+ user: userReducer,\n+ project: projectReducer,\n+ contest: contestReducer,\n+};\n+\n+export function rootReducer(state: RootModel, action: any) {\n+ if (environment.production) {\n+ return compose([combineReducers])(reducers);\n+ } else {\n+ return compose([storeFreeze, combineReducers])(reducers);\n+ }\n+}\n+\n"}]},{"id":"9224603","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export type Id = number;\n+\n+export type Path = [Document, Id];\n+\n+export interface List<T> {\n+ [query: string]: T[];\n+}\n+\n+export type Document = 'users'\n+ | 'projects'\n+ | 'contests'\n+ | 'threads'\n+ | 'messagesByThreads';\n+\n+export interface RootModel {\n+ threads: List<Thread>;\n+ messagesByThreads: {\n+ [threadId: Id]: List<Message>;\n+ };\n+};\n"}]},{"id":"9224602","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"64","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"64","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import * as message from '.\/message.actions';\n+\n+export const messagesReducer = (\n+ state: any = {}, action: any\n+): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_MESSAGES': {\n+ const newThreads: any = {};\n+ action.payload.forEach((message: any) => {\n+ const messageList: Array<any> = (\n+ newThreads[message.thread_id] || state[message.thread_id] || []\n+ ).filter((m: any) => m.id !== message.id);\n+ messageList.push(message);\n+ newThreads[message.thread_id] = messageList;\n+ });\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9224601","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9224600","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/message\/message.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export const messageEffects = {\n+ get: (threadId) => ({\n+ url: '\/messages\/0.1\/messages\/',\n+ options: {\n+ search: new URLSearchParams({\n+ 'threads[]': threadId,\n+ }),\n+ },\n+ }),\n+};\n"}]},{"id":"9224599","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+export const RECEIVED_FROM_SOCKET = '[Message] Received from socket';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class ReceivedFromSocket implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: { thread_id: string }) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9224598","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9224597","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"6","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"6","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ NgModule\n+export * from '.\/database.module';\n+\/\/ Database service\n+export * from '.\/database';\n+\/\/ Models\n+export * from '.\/thread\/thread.model';\n"}]},{"id":"9224596","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { threadEffects } from '.\/thread.effects';\n+\n+export interface Effect<T> {\n+ [doc: Document]: any;\n+}\n+\n+export const effects: Effects = {\n+ threads: threadEffects,\n+};\n"}]},{"id":"9224595","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/database.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"77","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"77","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/core';\n+export { effects } from '.\/effects';\n+import { Path, RootModel } from '.\/model';\n+\n+export interface ListOptions {\n+ query: Query;\n+}\n+\n+export interface Query {\n+ [key: string]: any;\n+ limit: any;\n+ offset: any;\n+}\n+\n+@Injectable()\n+export class Database {\n+\n+ constructor(\n+ private store: Store<RootModel>,\n+ private apiService: ApiService,\n+ private webSocketService: WebSocketService,\n+ ) {}\n+\n+ list(ref: Document|Path, options?: ListOptions) {\n+ const path = Array.isArray(ref) ? ref : [ref];\n+ const query = options.query;\n+ \/\/ TODO: QueryObservable\n+\n+ return Observable.combineLatest([\n+ this.store.pluck(...path)\n+ .map(queryList => queryList.slice(offset, offset + limit))\n+ .distinctUntilChanged(),\n+ Observable.of(effects[path[0]].get())\n+ .filter(x => x)\n+ .switchMap(({url, search}) => this.apiService.get(url, {search}))\n+ .do((payload) => this.store.dispatch({\n+ action: 'API_LOAD_SUCCESS',\n+ path,\n+ query,\n+ payload,\n+ })),\n+ Observable.of(effects[path[0]].live())\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocketService())\n+ .do(data => this.store.dispatch({\n+ action: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { path, query, data },\n+ })),\n+ ], (state) => state\n+ ).map(source => new ActionableObservable(path, this.store, source));\n+ }\n+\n+ object(ref: Document|Path) {\n+ const path = Array.isArray(ref) ? ref : [ref];\n+\n+ return Observable.combineLatest([\n+ this.store.pluck(...path)\n+ .distinctUntilChanged(),\n+ Observable.of(effects[path[0]].get())\n+ .filter(x => x)\n+ .switchMap(({url, search}) => this.apiService.get(url, {search}))\n+ .do((data) => this.store.dispatch({\n+ action: 'API_LOAD_SUCCESS',\n+ payload: { path, data },\n+ })),\n+ Observable.of(effects[path[0]].live())\n+ .filter(x => x)\n+ .switchMap(({}) => this.webSocketService())\n+ .do(data => this.store.dispatch({\n+ action: 'WEBSOCKET_LOAD_SUCCESS',\n+ payload: { path, query, data },\n+ })),\n+ ], (state) => state\n+ ).map(source => new ActionableObservable(path, this.store, source));\n+ }\n+\n+}\n"}]},{"id":"9224594","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/database.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule, Optional, SkipSelf } from '@angular\/core';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n+import { AuthModule } from '@shared-angular\/auth';\n+\n+import { ApiHttpService } from '.\/api-http.service';\n+import { WebSocketService } from '.\/web-socket.service';\n+\n+import { rootReducer } from '.\/root.reducer';\n+\n+@NgModule({\n+ imports: [\n+ AuthModule,\n+ StoreModule.provideStore(rootReducer),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n+ ],\n+ providers: [\n+ ReactiveStore,\n+ ApiHttpService,\n+ [WebSocketService, { provide: ConfigService, useClass: ConfigService }],\n+ ],\n+})\n+export class DatabaseModule {\n+ constructor(@Optional() @SkipSelf() parentModule: DatabaseModule) {\n+ if (parentModule) {\n+ throw new Error(`DatabaseModule has already been loaded. Import Database modules\n+ in the AppModule only.`);\n+ }\n+ }\n+}\n"}]},{"id":"9224593","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"57","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"57","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Response } from '@angular\/http';\n+\n+@Injectable()\n+export class ApiHttpService extends Http {\n+ constructor(backend: ConnectionBackend,\n+ defaultOptions: RequestOptions,\n+ auth: AuthService) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n+ return Observable.of({url, options})\n+ .do(() => console.log(`get ${url}`))\n+ .withLatestFrom(this.authHeader())\n+ .map(([{url, options}, authHeader]) => {\n+ options.header = Object.assign({}, options.headers, authHeader);\n+ return super.get(`\/api\/${url}`);\n+ })\n+ .map((res: Response) => res.json())\n+ .map(body => body.result || [])\n+ .catch(this.handleException);\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private authHeader(): Observable<Headers> {\n+ return this.auth.map(({uid, hash}) => \n+ new Headers({ 'Freelancer-Auth-V2': `${uid};${hash}` })\n+ );\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ let params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9224592","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/database\/actionable-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/core';\n+import { Observable } from 'rxjs\/Observable';\n+\n+export class ActionableObservable<T> extends Observable<T> {\n+ constructor(\n+ private path: Path,\n+ private id: number,\n+ private store: Store,\n+ source: Observable<T>,\n+ ) {\n+ super();\n+ this.source = source;\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): ActionableObservable<R> {\n+ const store = new ActionableObservable<R>(this.ref, this.store, this);\n+ store.operator = operator;\n+ return store;\n+ }\n+\n+ action(actionType: ActionType, params): Promise<void> {\n+ this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ });\n+ \/\/ Run any side effects\n+ return Observable.of(effects[this.ref][actionType](this.key.id, params))\n+ .switchMap(({url, body}) => this.apiHttp.post(url, body))\n+ .do(this.store.dispatch({\n+ type: 'LOAD_SUCCESS',\n+ entities: ref,\n+ }))\n+ .mapTo(void 0)\n+ .toPromise();\n+ }\n+\n+}\n+\n"}]},{"id":"9224591","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9224590","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9224589","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export * from '.\/core.module';\n-export * from '.\/thread.model';\n-export * from '.\/thread.service';\n"}]},{"id":"9224588","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"24","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"24","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { NgModule, Optional, SkipSelf } from '@angular\/core';\n-import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n-\n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n-\n-@NgModule({\n- imports: [\n- CommonModule,\n- ],\n- providers: [\n- ThreadService,\n- ],\n-})\n-export class CoreModule {\n- constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n- }\n-}\n"}]},{"id":"9224587","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"17","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"17","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-\/\/ These config have to be provided before using the other @shared-angular\n-\/\/ modules\n-export class SharedConfig {\n- apiBaseUrl: string;\n- authBaseUrl: string;\n- authTokenCookie: string;\n- facebookAppId: string;\n- gafBaseUrl: string;\n- userIdCookie: string;\n- defaultAvatarUrl: string;\n- languageCookie: string;\n- languageCookieDomain: string;\n- languageCookieExpires: number;\n- flnBillingBaseUrl: string;\n- translateModeCookie: string;\n- lookingForCookie: string;\n-}\n"}]},{"id":"9224586","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/auth\/auth.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"36","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"36","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { CookieService } from 'angular2-cookie\/services\/cookies.service';\n+import { APP_CONFIG } from 'app\/config';\n+\n+export interface AuthState {\n+ uid: number;\n+ hash: string;\n+};\n+\n+@Injectable()\n+export class Auth extends Observable<AuthState> {\n+\n+ constructor(private appConfig: APP_CONFIG,\n+ private cookieService: CookieService) {\n+ this.next({\n+ uid: parseInt(this.cookieService.get(appConfig.userIdCookie), 10),\n+ hash: this.getCookie(this.appConfig.authHashCookie),\n+ });\n+ }\n+\n+ lift<R>(operator: Operator<T, R>): Auth<R> {\n+ const store = new Auth<R>();\n+ store.operator = operator;\n+ return store;\n+ }\n+\n+ login(): Promise<void> {\n+ \/\/ TODO\n+ }\n+\n+ logout(): Promise<void> {\n+ \/\/ TODO\n+ \/\/ this.next({});\n+ }\n+\n+}\n"}]},{"id":"9224585","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/auth\/auth.module.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { NgModule } from '@angular\/core';\n+import { CookieService } from 'angular2-cookie\/services\/cookies.service';\n+import { Auth } from '.\/auth';\n+\n+@NgModule({\n+ providers: [\n+ CookieService,\n+ Auth,\n+ ],\n+})\n+export class AuthModule { }\n"}]},{"id":"9224584","metadata":{"line:first":154},"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"6","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"400","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n !app_page!}}\n \n {{?app_page?\n <base href=\"\/\" \/>\n ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n+ {{!app_page!\n+\n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n !app_page!}}\n \n <\/head>\n <body data-role=\"page\">\n \n {{!app_page!\n \n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n !app_page!}}\n \n {{?app_page?\n- <fl-app><\/fl-app>\n+ <main style=\"height: 100vh\">\n+ <fl-app><\/fl-app>\n+ <\/main>\n <!-- app-server-environment are environment vars, NOT a mechanism to pass\n data between the server & the client. -->\n <!-- All app environment vars MUST BE static and MUST NOT change\n between pages and\/or users or things would break badly -->\n {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n+ {{<systemjs_server_data('app-server-environment', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_module('app')>}}\n {{<systemjs_module('{{(app_page)}}')>}}\n ?app_page?}}\n \n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9224583","metadata":{"line:first":40},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"15","delLines":"5","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1263","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n },\n \"dependencies\": {\n \"@angular\/common\": \"2.2.4\",\n \"@angular\/compiler\": \"2.2.4\",\n \"@angular\/compiler-cli\": \"2.2.4\",\n \"@angular\/core\": \"2.2.4\",\n+ \"@angular\/http\": \"2.3.1\",\n \"@angular\/platform-browser\": \"2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n \"@angular\/router\": \"3.2.4\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n \"@types\/jasmine\": \"^2.2.33\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n \"@types\/systemjs\": \"^0.19.30\",\n+ \"angular2-cookie\": \"^1.2.6\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n+ \"rxjs\": \"^5.0.0-rc.4\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n \"tslint\": \"^3.15.1\",\n \"typescript\": \"~2.0.10\",\n \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"8b09c74cf24f954d4e29ebcea5898ff981c2b867":{"commit":"8b09c74cf24f954d4e29ebcea5898ff981c2b867","tree":"da824f6e6205ade04b73054aab298a1a322c81b4","parents":["baced163471560f6b90c7c31de013f10a7d9b4fb"],"time":"1487693671","author":"Laurent Goudet","summary":"WIP","message":"WIP","authorEmail":"laurent@freelancer.com"},"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"693951":{"id":"693951","revisionID":"56417","dateCreated":"1487578693","dateModified":"1487578695","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-ngrx","bookmark":null,"creationMethod":"arc","description":" - push for pez","unitStatus":"1","lintStatus":"4","changes":[{"id":"9219072","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9219071","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9219070","metadata":{"line:first":6},"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"33","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"compilerOptions\": {\n \"emitDecoratorMetadata\": true,\n \"experimentalDecorators\": true,\n \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n+ \"module\": \"system\",\n \"noEmit\": true,\n \"lib\": [\"es6\", \"dom\"],\n \"noImplicitAny\": true,\n \"strictNullChecks\": true,\n \"skipLibCheck\": true,\n \"target\": \"es5\",\n \"baseUrl\": \".\",\n \"paths\": {\n \"@shared-angular\/*.ts\": [\n \"@shared-angular\/*\/index.ts\"\n ],\n \"server-data\/app-server-environment\": [\n \"app\/mock-app-server-environment\"\n ]\n }\n },\n \"include\": [\n \"**\/*\"\n ],\n \"exclude\": [\n \"**\/*.spec.ts\"\n ],\n \"angularCompilerOptions\": {\n \"genDir\": \"..\/.modules\",\n \"skipMetadataEmit\" : true\n }\n }\n"}]},{"id":"9219069","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9219068","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9219067","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <fl-infinite-scrolling root=\"scrollArea\"\n+ (load)=\"load.emit(5)\"\n+ >\n+ <\/fl-infinite-scrolling>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+}\n"}]},{"id":"9219066","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9219065","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+ <img src=\"{{thread.avatarUrl}}\" class=\"avatar\">\n+ <div class=\"body\">\n+ <div class=\"body-content-username\">\n+ {{thread.username}}\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{thread.lastMessage}}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9219064","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9219063","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9219062","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9219061","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9219060","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9219059","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9219058","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9219057","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"33","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"21","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n+import { ConfigService } from '@shared-angular\/core';\n import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+\n import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { MessageSortPipe } from '.\/pipes\/message-sort.pipe';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n MessagingModule,\n MessagingInboxRoutingModule,\n ],\n declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessageSortPipe,\n MessagingInboxComponent,\n ],\n+ providers: [\n+ ConfigService,\n+ ]\n })\n export class MessagingInboxModule {\n \n }\n+\n"}]},{"id":"9219056","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"68","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"8","newLength":"74","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component } from '@angular\/core';\n+import { FlStore, FlListObservable, Thread, Message } from '@shared-angular\/core';\n+import { Subject } from 'rxjs\/Subject';\n \n @Component({\n selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\"\n+ >\n+ <\/inbox-thread-list>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>\n+ `,\n styleUrls: ['.\/messaging-inbox.component.less'],\n })\n-export class MessagingInboxComponent {}\n+export class MessagingInboxComponent implements OnInit {\n+ threads: FlListObservable<Thread[]>;\n+ threadsLimit = new Subject<number>().startWith(10);\n+ messages: FlListObservable<Message[]>;\n+\n+ constructor(\n+ private store: FlStore,\n+ private router: Router,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.threads = this.store.list('threads', {\n+ query: {\n+ orderByChild: 'time_updated',\n+ limitToFirst: threadsLimit,\n+ },\n+ });\n+ this.messages = this.route.data\n+ .map(threadId => this.store.list(['messages', threadId]));\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.emit(count);\n+ }\n+\n+ sendMessage(message: string) {\n+ this.messages.push({ message });\n+ }\n+\n+ \/*createThread() {\n+ this.threads.push();\n+ }*\/\n+\n+}\n"}]},{"id":"9219055","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"38","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n }\n"}]},{"id":"9219054","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9219053","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-sort.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Pipe, PipeTransform } from '@angular\/core';\n+\/*\n+ * Sort messages by (message.time_created || message.client_message_id)\n+*\/\n+@Pipe({name: 'messageSort'})\n+export class MessageSortPipe implements PipeTransform {\n+ transform(messages: Array<any>): Array<any> {\n+ return messages.map((message) => message).sort(\n+ (a, b) => this.timeValue(a) - this.timeValue(b)\n+ );\n+ }\n+\n+ timeValue(message: any): number {\n+ const client_message_id = message.client_message_id\n+ ? Number(message.client_message_id) \/ 1000\n+ : 0;\n+ return Number(message.time_created || client_message_id);\n+ }\n+}\n"}]},{"id":"9219052","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9219051","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9219050","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { ConfigService } from '@shared-angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private configService: ConfigService,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return this.message && this.message.from_user &&\n+ this.message.from_user == this.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9219049","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9219048","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message: EventEmitter<string>;\n+\n+ sendMessage(messageInput: HTMLInputElement) {\n+ this.message.emit(messageInput.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9219047","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9219046","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9219045","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9219044","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9219043","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9219042","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9219041","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9219040","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/publish';\n"}]},{"id":"9219039","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const cookieBase = '';\n-\n+export const notifyServer = '';\n export const flnBillingBaseUrl = '';\n"}]},{"id":"9219038","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"29","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { BrowserModule } from '@angular\/platform-browser';\n import { CoreModule } from '@shared-angular\/core';\n+import { HttpModule } from '@angular\/http';\n import { SharedConfig } from '@shared-angular\/config';\n import { AppComponent } from '.\/app.component';\n import { AppEmptyComponent } from '.\/app-empty.component';\n import { AppRoutingModule } from '.\/app-routing.module';\n import { appConfig } from '.\/app.config';\n \n @NgModule({\n imports: [\n BrowserModule,\n CoreModule,\n+ HttpModule,\n AppRoutingModule,\n ],\n declarations: [\n AppComponent,\n AppEmptyComponent,\n ],\n providers: [\n { provide: SharedConfig, useValue: appConfig },\n ],\n exports: [\n AppComponent,\n ],\n bootstrap: [AppComponent],\n })\n export class AppModule {\n }\n"}]},{"id":"9219037","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"20","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n+import {\n+ cookieBase,\n+ flnBillingBaseUrl,\n+ notifyServer,\n+} from 'server-data\/app-server-environment';\n \n const appConfig = {\n apiBaseUrl: '\/api',\n authBaseUrl: '\/auth',\n authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n facebookAppId: '',\n gafBaseUrl: '',\n userIdCookie: `${cookieBase}_USER_ID`,\n defaultAvatarUrl: '\/img\/unknown.png',\n languageCookie: `${cookieBase}_LANGUAGE`,\n languageCookieDomain: cookieBase,\n languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n flnBillingBaseUrl,\n translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n };\n \n export { appConfig };\n"}]},{"id":"9219036","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"4","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n+import '.\/rxjs-operators';\n+import { Component, Inject, ViewEncapsulation } from '@angular\/core';\n+import { StateModel, RootReducer } from '@shared-angular\/core';\n \n @Component({\n selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n+ template: `<router-outlet><\/router-outlet>`,\n })\n export class AppComponent {\n+ constructor() {}\n }\n"}]},{"id":"9219035","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n+import { InfiniteScrolling } from '.\/infinite-scrolling';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n+ InfiniteScrolling,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9219034","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9219033","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/infinite-scrolling.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'fl-infinite-scrolling',\n+ template: `\n+ <div><\/div>\n+ `,\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InfiniteScrollingComponent implements AfterViewInit, OnDestroy {\n+ private observer: IntersectionObserver; \n+ @Input() root: ElementRef;\n+ @Input() threshold: number;\n+ @Output() load = new EventEmitter<boolean>();\n+\n+ constructor(private el: ElementRef) {}\n+\n+ ngAfterViewInit() {\n+ this.observer = new IntersectionObserver(\n+ (result) => this.load.emit(true), {\n+ root,\n+ treshold,\n+ });\n+ this.observer.observe(this.el);\n+ return () => instance.disconnet();\n+ });\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9219032","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9219031","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9219030","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { ActionReducer } from '@ngrx\/store';\n+import { UserActions, UserActionTypes } from '.\/user.actions';\n+import { User } from '.\/user.model';\n+\n+export const usersReducer: ActionReducer<User> =\n+ (state = {}, action: UserActions) => {\n+ switch (action.type) {\n+ case 'FETCHED_USERS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9219029","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9219028","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const UserActionTypes = {\n+ LOAD: type('[Thread] Load'),\n+ LOAD_SUCCESS: type('[Thread] Load success'),\n+};\n+\n+export class LoadAction implements Action {\n+\ttype = ActionTypes.LOAD;\n+\n+ constructor(public payload: Thread) {\n+\n+\n+ }\n+\n+\n+}\n+\n"}]},{"id":"9219027","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { ActionReducer } from '@ngrx\/store';\n+import { Thread } from '.\/thread.model';\n+import * as thread from '.\/thread.actions';\n+import * as message from '..\/message.actions';\n+\n+export const threadsReducer: ActionReducer<Entities<Thread>> =\n+ (state = {}, action: thread.Actions) => {\n+ switch (action.type) {\n+ case thread.LOAD:\n+ action.payload.reduce((threads, thread) => {\n+ threads[thread.id] = thread;\n+ }, {});\n+ return Object.assign({}, state, threads);\n+\n+ case message.RECEIVED_FROM_SOCKET:\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);\n+\n+ default:\n+ return state;\n+ }\n+};\n+\n"}]},{"id":"9219026","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"218","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"218","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ contest?: ThreadContest;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: Date;\n+ time_created: Date;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: Date;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: Date;\n+ time_updated: Date;\n+}\n+\n+export ThreadUser {\n+\tstatus: {\n+\t\tpayment_verified: null,\n+\t\tidentity_verified: null,\n+\t\temail_verified: true,\n+\t\tdeposit_made: null,\n+\t\tphone_verified: null,\n+\t\tfacebook_connected: null,\n+\t\tprofile_complete: null\n+\t},\n+\tavatar_large: \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg,\n+\tavatar_cdn: \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg,\n+\tspam_profile: null,\n+\tsearch_languages: null,\n+\tsupport_status: null,\n+\tlast_name: null,\n+\tsuspended: null,\n+\tprimary_language: en,\n+\ttimezone: {\n+\t\tcountry: AU,\n+\t\toffset: 10,\n+\t\tid: 234,\n+\t\ttimezone: Australia\/NSW\n+\t},\n+\tmembership_package: null,\n+\tqualifications: null,\n+\tid: 8239778,\n+\tbadges: null,\n+\thourly_rate: null,\n+\tresponsiveness: null,\n+\tfirst_name: null,\n+\tdisplay_name: null,\n+\ttagline: null,\n+\taccount_balances: null,\n+\trole: employer,\n+\tlocation: {\n+\t\tadministrative_area: null,\n+\t\tcity: asdfasdf,\n+\t\tcountry: {\n+\t\t\thighres_flag_url: null,\n+\t\t\tcode: null,\n+\t\t\tname: United States,\n+\t\t\tflag_url_cdn: null,\n+\t\t\thighres_flag_url_cdn: null,\n+\t\t\tflag_url: null\n+\t\t},\n+\t\tvicinity: null,\n+\t\tlongitude: null,\n+\t\tfull_address: null,\n+\t\tlatitude: null\n+\t},\n+\tclosed: false,\n+\temail: null,\n+\tusername: yin13,\n+\tis_local: null,\n+\tendorsements: null,\n+\tjobs: null,\n+\temployer_reputation: null,\n+\tregistration_date: 1377186231,\n+\tis_active: null,\n+\tavatar_large_cdn: \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg,\n+\tprofile_description: null,\n+\tlimited_account: false,\n+\tportfolio_count: null,\n+\tpreferred_freelancer: null,\n+\ttrue_location: null,\n+\tprimary_currency: {\n+\t\tcode: AUD,\n+\t\tname: Australian Dollar,\n+\t\tcountry: AU,\n+\t\tsign: $,\n+\t\texchange_rate: 0.740923,\n+\t\tid: 3\n+\t},\n+\tmobile_tracking: null,\n+\tchosen_role: both,\n+\treputation: null,\n+\tavatar: \/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg,\n+\tcover_image: null,\n+\tforce_verify: null\n+}\n+\n+ThreadProject {\n+ \"hidebids\": false,\n+ \"files\": null,\n+ \"attachments\": null,\n+ \"bidperiod\": 7,\n+ \"currency\": {\n+ \"code\": \"USD\",\n+ \"name\": \"US Dollar\",\n+ \"country\": \"US\",\n+ \"sign\": \"$\",\n+ \"exchange_rate\": 1,\n+ \"id\": 1\n+ },\n+ \"featured\": true,\n+ \"preview_description\": \"Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as\",\n+ \"upgrades\": {\n+ \"active_prepaid_milestone\": null,\n+ \"NDA\": false,\n+ \"assisted\": null,\n+ \"urgent\": false,\n+ \"featured\": true,\n+ \"nonpublic\": false,\n+ \"fulltime\": false,\n+ \"qualified\": false,\n+ \"sealed\": false\n+ },\n+ \"invited_freelancers\": null,\n+ \"id\": 4911007,\n+ \"active_prepaid_milestone\": null,\n+ \"negotiated\": false,\n+ \"title\": \"Build a Website asd fasdfasdfasdfasdfasdf\",\n+ \"assisted\": null,\n+ \"submitdate\": 1419310395,\n+ \"nda_signatures\": null,\n+ \"nonpublic\": false,\n+ \"location\": {\n+ \"administrative_area\": null,\n+ \"city\": null,\n+ \"country\": {\n+ \"highres_flag_url\": null,\n+ \"code\": null,\n+ \"name\": null,\n+ \"flag_url_cdn\": null,\n+ \"highres_flag_url_cdn\": null,\n+ \"flag_url\": null\n+ },\n+ \"vicinity\": null,\n+ \"longitude\": null,\n+ \"full_address\": null,\n+ \"latitude\": null\n+ },\n+ \"recommended_freelancers\": null,\n+ \"type\": \"fixed\",\n+ \"hireme\": false,\n+ \"owner_id\": 8239506,\n+ \"status\": \"active\",\n+ \"jobs\": null,\n+ \"description\": null,\n+ \"can_post_review\": null,\n+ \"deleted\": false,\n+ \"qualifications\": null,\n+ \"time_free_bids_expire\": null,\n+ \"frontend_project_status\": \"open\",\n+ \"hourly_project_info\": null,\n+ \"true_location\": null,\n+ \"sub_status\": null,\n+ \"time_updated\": null,\n+ \"language\": \"en\",\n+ \"seo_url\": \"PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf\",\n+ \"urgent\": false,\n+ \"user_distance\": null,\n+ \"local\": false,\n+ \"time_submitted\": 1419310395,\n+ \"budget\": {\n+ \"currency_id\": null,\n+ \"minimum\": 250,\n+ \"maximum\": 750,\n+ \"project_type\": null,\n+ \"name\": null\n+ },\n+ \"negotiated_bid\": null,\n+ \"bid_stats\": {\n+ \"bid_count\": 0,\n+ \"bid_avg\": null\n+ },\n+ \"hireme_initial_bid\": null,\n+ \"from_user_location\": null\n+ },\n+}\n"}]},{"id":"9219025","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"62","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"62","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { URLSearchParams } from '@angular\/http';\n+import { Effect, Actions } from '@ngrx\/effects';\n+import { ApiHttp } from '..\/api-http.service';\n+import * as thread from '.\/thread.actions';\n+\n+@Injectable()\n+export class ThreadEffects {\n+ constructor(private actions: Actions, private apiHttp: ApiHttp) {}\n+\n+ @Effect()\n+ load: Observable<Action> = this.actions\n+ .ofType(thread.LOAD)\n+ .switchMap(payload => {\n+ const params = new URLSearchParams();\n+ params.set('unread_count', true);\n+ params.set('last_message', true);\n+ params.set('message_details', true);\n+ params.set('context_details', true);\n+ params.set('user_details', true);\n+ return this.apiHttp.get('\/messages\/0.1\/threads\/', { search: params });\n+ })\n+ .mergeMap(result => {\n+ const actions = [];\n+ if (result.threads) {\n+ actions.push(thread.LoadSuccessAction(result.threads));\n+ }\n+ if (result.users) {\n+ actions.push(users.LoadSuccessAction(result.users));\n+ }\n+ if (result.context_details && result.context_details.projects) {\n+ actions.push(\n+ projects.LoadSuccessAction(result.context_details.projects));\n+ }\n+ if (result.context_details && result.context_details.contests) {\n+ contests.LoadSuccessAction(result.context_details.contests);\n+ }\n+ return Observable.from(actions);\n+ })\n+ .catch(error => thread.LoadFailAction(error));\n+\n+ @Effect()\n+ sendMessage: Observable<Action> = this.actions\n+ .ofType(message.SEND_MESSAGE)\n+ .switchMap(({message, threadId}: {string, number}) => {\n+ const payload = {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ from_user: this.selfId,\n+ };\n+ return this.apiHttp.post('\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ payload,\n+ { search: params });\n+ })\n+ .map(result => thread.SendMessageSuccessAction(result))\n+ .catch(error => thread.SendMessageFailAction(error));\n+\n+\n+}\n"}]},{"id":"9219024","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Thread] Load';\n+export const LOAD_SUCCESS = '[Thread] Load Success';\n+export const LOAD_FAIL = '[Thread] Load Fail';\n+export const SEND_MESSAGE = '[Thread] Send Message';\n+export const SEND_MESSAGE_SUCCESS = '[Thread] Send Message Success';\n+export const SEND_MESSAGE_FAIL = '[Thread] Send Message Fail';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Thread[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE;\n+\n+ constructor(public payload: {\n+ message: string,\n+ threadId: number\n+ }) { }\n+}\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE_SUCCESS;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class SendMessageFail implements Action {\n+ type = SEND_MESSAGE_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction\n+ | SendMessageAction\n+ | SendMessageSuccess\n+ | SendMessageFail;\n+\n"}]},{"id":"9219023","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"340","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"342","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n+\n+type ThreadAction = '[Thread] Send Message';\n+\n+export const LOAD = '[Thread] Load';\n+export const LOAD_SUCCESS = '[Thread] Load Success';\n+export const LOAD_FAIL = '[Thread] Load Fail';\n+export const SEND_MESSAGE = '[Thread] Send Message';\n+export const SEND_MESSAGE_SUCCESS = '[Thread] Send Message Success';\n+export const SEND_MESSAGE_FAIL = '[Thread] Send Message Fail';\n+\n+export class LoadAction implements Action {\n+ type = '[Thread] Load';\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = '[Thread] Load Success';\n+\n+ constructor(public payload: Thread[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = '[Thread] Load Fail';\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE;\n+\n+ constructor(public payload: {\n+ message: string,\n+ threadId: number\n+ }) { }\n+}\n+\n+export class SendMessageFail implements Action {\n+ type = SEND_MESSAGE_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction\n+ | SendMessageAction\n+ | SendMessageSuccess\n+ | SendMessageFail;\n+\n+\n+\n+\/\/ THREAD\n+\n+export class ThreadListObservable extends Observable<Thread> {\n+\n+ constructor(subscribe?: <R>(subscriber: Subscriber<R>) => Subscription | Function | void,\n+ private actions) {\n+ super(subscribe);\n+ }\n+ \n+ \/\/ createThread()\n+ push()\n+\n+}\n+\n+export class ThreadsService {\n+ private store = Observable<Entities<Thread>>\n+ private actions = new Subject<ThreadAction>();\n+\n+ constructor(store: Store) {\n+ this.threads = store.select('threads');\n+ }\n+ \n+ list(query?: Query) {\n+ return new ThreadListObservable(\n+\t\t\tthis.threads\n+\t\t\t .map(entities => Object.keys(entities).map(id => entities[id])),\n+ this.actions\n+ );\n+ }\n+ \n+ object() {\n+\n+ }\n+\n+}\n+\n+\/\/ MESSAGE\n+\n+\n+\/\/ Action constructors\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE;\n+\n+ constructor(public payload: {\n+ message: string,\n+ threadId: number\n+ }) { }\n+}\n+:q\n+\n+\/\/\n+export class MessageListObservable extends Observable<Thread> {\n+\n+ constructor(private ref: string,\n+ subscribe?: <R>(subscriber: Subscriber<R>) => Subscription | Function | void,\n+ private actions) {\n+ super(subscribe);\n+ }\n+\n+ \/\/ sendMessage\n+ push(message: string): Promise<void> {\n+ this.actions.emit(new SendMessageAction(message, this.ref));\n+ return this.actions\n+ .filter(action => action instanceof SendMessageSuccessAction)\n+ .toPromise();\n+ }\n+\n+}\n+\n+{\n+ endpoint: 'threads\/0.1\/messages'\n+ params: {\n+\n+ }\n+\n+}\n+\n+\n+export interface Message {\n+\n+\n+}\n+\n+\n+export class MessageService {\n+ private messages: Observable<Entities<Entities<Message>>>();\n+ private messageActions = new Subject<MessageAction>();\n+\n+ constructor(private store: Store, private apiHttp: ApiHttp) {\n+ \/\/ bind to the global store\n+ this.messages = store.select('messages');\n+ this.messageActions.map(action => store.dispatch(action));\n+ }\n+\n+\/\/ reducer\n+(state, action) => state\n+\n+\n+ \n+\n+\n+ this.messageActions\n+\t .withLatestFrom(this.messages)\n+\t\t.filter(action => action instanceof LoadMessagesAction)\n+\t\t.map(([payload, state]) => {\n+\n+\n+ }) \n+\n+ \/\/ get messages\n+ this.messageActions\n+ .filter(action => action instanceof LoadMessagesAction)\n+\t\t\t.withLatestFrom(this.messages)\n+\t .map(([payload, state]) =>Y {\n+\n+\n+\n+\n+ .switchMap(({threadId}) => {\n+ const params = new URLSearchParams();\n+ params.set('unread_count', true);\n+ params.set('last_message', true);\n+ params.set('message_details', true);\n+ params.set('context_details', true);\n+ params.set('user_details', true);\n+ return this.apiHttp.get('\/messages\/0.1\/threads\/', { search: threadId });\n+ })\n+ .map(result => {\n+\t\t\t\ttLoadSuccessAction(result.threads)\n+ const actions = [];\n+ if (result.threads) {\n+ actions.push(thread.LoadSuccessAction(result.threads));\n+ }\n+ if (result.users) {\n+ actions.push(users.LoadSuccessAction(result.users));\n+ }\n+ if (result.context_details && result.context_details.projects) {\n+ actions.push(\n+ projects.LoadSuccessAction(result.context_details.projects));\n+ }\n+ if (result.context_details && result.context_details.contests) {\n+ contests.LoadSuccessAction(result.context_details.contests);\n+ }\n+ return Observable.from(actions);\n+ })\n+ .catch(error => thread.LoadFailAction(error));\n+\n+ \/\/ send message\n+ this.messageActions\n+ .filter(action => action instanceof SendMessageAction)\n+ .switchMap(({message, threadId}) =>\n+ this.apiHttp.post('\/messages\/0.1\/threads\/${threadId}\/messages\/', {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ from_user: this.selfId,\n+ })\n+ )\n+ .map(() => this.actions(new SendMessageSuccessAction()));\n+\n+\n+ }\n+ \n+ list(threadId: number, query?: Query): MessageListObservable {\n+ \/\/ QueryObserver\n+ const params = new URLSearchParams();\n+ params.set('threads[]', threadId);\n+ params.set('limit', 50);\n+ return this.apiHttp.get('\/messages\/0.1\/messages\/', { search: params });\n+\n+ this.messageActions.emit(new LoadMessageAction(threadId));\n+ return new MessageListObservable(\n+ threadId,\n+ this.messages\n+ .map(byThreadIds => byThreadIds[threadId])\n+ .map(entities => Object.keys(entities).map(id => entities[id])),\n+ this.actions\n+ );\n+ }\n+\n+}\n+ \n+\n+\n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ contest?: ThreadContest;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: number;\n+ time_created: number;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: number;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: number;\n+ time_updated: number;\n+}\n+\n+\n+\n+class ThreadListObservable {\n+\n+ constructor(private threadId: number) {\n+\n+ }\n+\n+ sendMessage(message: string): Promise<void> {\n+ \/\/ WRONG: unsub from ThreadListObservable should cancel the HTTP request\n+ \n+ const payload = {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ from_user: this.selfId,\n+ };\n+ return this.apiHttp.post('\/messages\/0.1\/threads\/${this.threadId}\/messages\/',\n+ payload)\n+ .map(result => this.store.dispatch('ADD_MESSAGE'))\n+ .toPromise();\n+ \n+\n+ }\n+\n+}\n+\n+\n+\n+\n+class ThreadService {\n+\n+\n+ constructor() {\n+ this.threads = store.select('threads')..\n+ }\n+\n+ list(threadId: number): ThreadListObservable {\n+ const params = new URLSearchParams();\n+ params.set('unread_count', true);\n+ params.set('last_message', true);\n+ params.set('message_details', true);\n+ params.set('context_details', true);\n+ params.set('user_details', true);\n+ this.apiHttp.get('\/messages\/0.1\/threads\/{threadId}', {\n+ search: params\n+ })\n+ .map(response => this.store.dispatch('ADD_MESSAGE', response))\n+ .withLatestFrom(\n+ this.threads\n+ .map(byThreadIds => byThreadIds[threadId])\n+ .map(entities => Object.keys(entities).map(id => entities[id])),\n+ (, threads) => threads)\n+ .map(threads => new ThreadListObservable(threadId, threads, this.store);\n+ }\n \n }\n"}]},{"id":"9219022","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9219021","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"70","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"70","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Inject, Injectable } from '@angular\/core';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+import SockJS from 'sockjs';\n+import { ConfigService } from '.\/config.service';\n+\n+\/\/ TODO: use \n+\n+return = new Observable((observer) {\n+\n+\n+})\n+.multicast(() => new Subject)\n+.refCount();\n+\n+@Injectable()\n+export class WebSocketService {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ public constructor(\n+ @Inject(ConfigService) configService: ConfigService,\n+ ) {\n+ this.configService = configService;\n+ }\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const url = this.configService.getSocketUrl();\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ let ws: any = new SockJS(url);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable);\n+ }\n+}\n"}]},{"id":"9219020","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/root.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+\n+import { RootState } from '.\/root-state.model';\n+\n+import { threadReducer } from '.\/thread\/thread.reducer';\n+import { messageReducer } from '.\/message\/message.reducer';\n+import { contestReducer } from '.\/reducers\/contest.reducer';\n+import { projectReducer } from '.\/reducers\/project.reducer';\n+import { userReducer } from '.\/reducers\/user.reducer';\n+\n+import { environment } from '..\/..\/app\/environment';\n+\n+const reducers = {\n+ thread: threadReducer,\n+ message: messageReducer,\n+ user: userReducer,\n+ project: projectReducer,\n+ contest: contestReducer,\n+};\n+\n+export function rootReducer(state: RootState, action: any) {\n+ if (environment.production) {\n+ return compose([combineReducers])(reducers);\n+ } else {\n+ return compose([storeFreeze, combineReducers])(reducers);\n+ }\n+}\n+\n"}]},{"id":"9219019","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/root.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Thread } from '.\/thread\/thread.model';\n+import { Entities } from '.\/entities.model';\n+\n+export type FlReference = RootPath|[RootPath, string];\n+\n+export type RootPath = 'users' | 'projects' | 'contests' |\n+ 'threads' | 'messagesByThreads';\n+\n+\/**\n+ * We treat each reducer like a table in a database. This means our top level\n+ * state interface is just a map of keys to inner state types.\n+ *\/\n+export interface RootModel {\n+ users: Entities<User>;\n+ projects: Entities<Project>;\n+ contests: Entities<Contest>;\n+ threads: Entities<Thread>;\n+ messagesByThreads: {\n+ [threadId: string]: Entities<Message>;\n+ };\n+}\n"}]},{"id":"9219018","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/project\/project.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const projectsReducer = (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_PROJECTS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9219017","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/project\/project.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Project {\n+\n+}\n"}]},{"id":"9219016","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"64","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"64","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import * as message from '.\/message.actions';\n+\n+export const messagesReducer = (\n+ state: any = {}, action: any\n+): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_MESSAGES': {\n+ const newThreads: any = {};\n+ action.payload.forEach((message: any) => {\n+ const messageList: Array<any> = (\n+ newThreads[message.thread_id] || state[message.thread_id] || []\n+ ).filter((m: any) => m.id !== message.id);\n+ messageList.push(message);\n+ newThreads[message.thread_id] = messageList;\n+ });\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9219015","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9219014","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { URLSearchParams } from '@angular\/http';\n+import { Effect, Actions } from '@ngrx\/effects';\n+import { ApiHttp } from '..\/api-http.service';\n+import * as message from '.\/message.actions';\n+\n+@Injectable()\n+export class MessageEffects {\n+ constructor(private actions: Actions, private apiHttp: ApiHttp) {}\n+\n+ @Effect()\n+ load: Observable<Action> = this.actions\n+ .ofType(message.LOAD)\n+ .switchMap((threadId: string) => {\n+ const params = new URLSearchParams();\n+ params.set('threads[]', threadId);\n+ params.set('limit', 50);\n+ return this.apiHttp.get('\/messages\/0.1\/messages\/', { search: params });\n+ })\n+ .map(result => message.LoadSuccessAction(result.messages));\n+ .catch(error => message.LoadFailAction(result.messages));\n+\n+}\n"}]},{"id":"9219013","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+export const RECEIVED_FROM_SOCKET = '[Message] Received from socket';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class ReceivedFromSocket implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: { thread_id: string }) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9219012","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9219011","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"6","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"8","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/core.module';\n-export * from '.\/thread.model';\n+export * from '.\/thread\/thread.model';\n export * from '.\/thread.service';\n+export * from '.\/root.reducer';\n+export * from '.\/socket.service';\n+export * from '.\/config.service';\n+\n+export * from '.\/root-state.model';\n"}]},{"id":"9219010","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/foo.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+\n+export class Store<T> extends Observable<T> {\n+ constructor() {\n+ super();\n+ }\n+\n+}\n+\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+\n+\n"}]},{"id":"9219009","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/fl-store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"35","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"35","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/core';\n+import { FlReference, RootModel } from '.\/root.model';\n+\n+export class FlStore extends Store<RootModel> {\n+\n+ constructor(\n+ private dispatcher: Observer<Action>,\n+ private _reducer: Observer<ActionReducer<any>>,\n+ state$: Observable<any>\n+ ) {\n+ super();\n+\n+ this.source = state$;\n+ }\n+\n+ list(ref: FlReference, query?: Object) {\n+ const path = !Array.isArray(ref) ? [ref] : ref;\n+ this.dispatcher.next({\n+ type: `GET ${path}`,\n+ payload: query,\n+ });\n+ return new FlListObservable(ref, this.pluck(...path)\n+ .map(entities => Object.keys(entities).map(id => entities[id]))\n+ .distinctUntilChanged());\n+ }\n+\n+ object(ref: Reference, query?: Object) {\n+ const path = !Array.isArray(ref) ? [ref] : ref;\n+ this.dispatch(`LOAD ..`);\n+ return new FlObjectObservable(ref, this.pluck(...path)\n+ .distinctUntilChanged());\n+ }\n+\n+}\n+\n"}]},{"id":"9219008","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/fl-object-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Observable } from 'rxjs\/Observable';\n+import { FlReference } from '.\/root.model';\n+\n+export class FlObjectObservable<T> extends Observable<T> {\n+\n+ constructor(public key: FlReference,\n+ subscribe?: <R>(subscriber: Subscriber<R>) => Subscription | Function | void) {\n+ super(subscribe);\n+ }\n+\n+ set(val:any): Promise<void> {\n+\n+ }\n+\n+ update(value: Object): Promise<void> {\n+\n+ }\n+\n+ remove(): Promise<void> {\n+\n+ }\n+\n+}\n"}]},{"id":"9219007","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/fl-list-obversable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Observable } from 'rxjs\/Observable';\n+import { FlReference } from '.\/root.model';\n+\n+export class FlListObservable<T> extends Observable<T> {\n+\n+ constructor(public ref: FlReference,\n+ subscribe?: <R>(subscriber: Subscriber<R>) => Subscription | Function | void) {\n+ super(subscribe);\n+ }\n+\n+ push(val:any): Promise<void> {\n+\n+ }\n+\n+ update(item, value: Object): Promise<void> {\n+\n+ }\n+\n+ remove(item?:FirebaseOperation): Promise<void> {\n+\n+ }\n+\n+}\n"}]},{"id":"9219006","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/entities.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Entities<T> {\n+ [id: string]: T\n+}\n"}]},{"id":"9219005","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"18","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"24","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule, Optional, SkipSelf } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n \n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n+import { WebSocketService } from '.\/socket.service';\n+import { ConfigService } from '.\/config.service';\n+import { ApiHttp } from '.\/api-http.service';\n+\n+import { rootReducer } from '.\/root.reducer';\n \n @NgModule({\n imports: [\n CommonModule,\n+ StoreModule.provideStore(rootReducer),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n ],\n providers: [\n+ ConfigService,\n ThreadService,\n+ ApiHttp,\n+ [WebSocketService, { provide: ConfigService, useClass: ConfigService }],\n ],\n })\n export class CoreModule {\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n+ if (parentModule) {\n+ throw new Error(`CoreModule has already been loaded. Import Core modules\n+ in the AppModule only.`);\n+ }\n }\n }\n"}]},{"id":"9219004","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/contest\/contest.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const contestsReducer = (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_CONTESTS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9219003","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/contest\/contest.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Contest {\n+\n+}\n"}]},{"id":"9219002","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/config.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"48","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"48","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { cookieBase, notifyServer } from 'server-data\/app-server-environment';\n+\n+@Injectable()\n+export class ConfigService {\n+ private cookieBase: string;\n+ private notifyServer: string;\n+ private selfId: string;\n+ private authHeader: {string: string};\n+ constructor() {\n+ this.cookieBase = cookieBase;\n+ this.notifyServer = notifyServer;\n+ }\n+\n+ public getUserId() {\n+ this.selfId = this.selfId || this.getCookie(`${this.cookieBase}_USER_ID`);\n+ return this.selfId;\n+ }\n+\n+ public getAuthHash() {\n+ return this.getCookie(`${this.cookieBase}_AUTH_HASH_V2`);\n+ }\n+\n+ public getAuthHeader() {\n+ this.authHeader = this.authHeader || {\n+ 'Freelancer-Auth-V2': `${this.getUserId()};${this.getAuthHash()}`,\n+ };\n+ return this.authHeader;\n+ }\n+ public getSocketUrl() {\n+ return this.notifyServer;\n+ }\n+\n+ private getCookie(cName: string) {\n+ const cookies = document.cookie;\n+ if (cookies.length > 0) {\n+ let cStart = cookies.indexOf(`${cName}=`);\n+ if (cStart != -1) {\n+ cStart = cStart + cName.length + 1;\n+ let cEnd = cookies.indexOf(';', cStart);\n+ if (cEnd == -1) cEnd = cookies.length;\n+ return cookies.substring(cStart, cEnd);\n+ }\n+ }\n+ return '';\n+ }\n+}\n"}]},{"id":"9219001","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Response } from '@angular\/http';\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n+ console.log('get...');\n+ return super.get(`\/api\/${url}`, options)\n+ .map((res: Response) => res.json())\n+ .map(body => body.result || [])\n+ .catch(this.handleException);\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ let params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9219000","metadata":{"line:first":17},"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"17","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/\/ These config have to be provided before using the other @shared-angular\n \/\/ modules\n export class SharedConfig {\n apiBaseUrl: string;\n authBaseUrl: string;\n authTokenCookie: string;\n facebookAppId: string;\n gafBaseUrl: string;\n userIdCookie: string;\n defaultAvatarUrl: string;\n languageCookie: string;\n languageCookieDomain: string;\n languageCookieExpires: number;\n flnBillingBaseUrl: string;\n translateModeCookie: string;\n lookingForCookie: string;\n+ notifyServer: string;\n }\n"}]},{"id":"9218999","metadata":{"line:first":154},"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"6","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"400","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n !app_page!}}\n \n {{?app_page?\n <base href=\"\/\" \/>\n ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n+ {{!app_page!\n+\n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n !app_page!}}\n \n <\/head>\n <body data-role=\"page\">\n \n {{!app_page!\n \n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n !app_page!}}\n \n {{?app_page?\n- <fl-app><\/fl-app>\n+ <main style=\"height: 100vh\">\n+ <fl-app><\/fl-app>\n+ <\/main>\n <!-- app-server-environment are environment vars, NOT a mechanism to pass\n data between the server & the client. -->\n <!-- All app environment vars MUST BE static and MUST NOT change\n between pages and\/or users or things would break badly -->\n {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n+ {{<systemjs_server_data('app-server-environment', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_module('app')>}}\n {{<systemjs_module('{{(app_page)}}')>}}\n ?app_page?}}\n \n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9218998","metadata":{"line:first":40},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"19","delLines":"5","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1267","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n },\n \"dependencies\": {\n \"@angular\/common\": \"2.2.4\",\n \"@angular\/compiler\": \"2.2.4\",\n \"@angular\/compiler-cli\": \"2.2.4\",\n \"@angular\/core\": \"2.2.4\",\n+ \"@angular\/http\": \"2.3.1\",\n \"@angular\/platform-browser\": \"2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n \"@angular\/router\": \"3.2.4\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/effects\": \"^2.0.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n \"@types\/jasmine\": \"^2.2.33\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n+ \"ng2-redux\": \"^4.2.1\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n+ \"redux\": \"^3.6.0\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n+ \"rxjs\": \"^5.0.0-rc.4\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n \"tslint\": \"^3.15.1\",\n \"typescript\": \"~2.0.10\",\n \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n+ \"ng2-redux\": \"npm:ng2-redux@4.2.1\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n+ \"redux\": \"npm:redux@3.6.0\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"nope","local:commits":{"baced163471560f6b90c7c31de013f10a7d9b4fb":{"commit":"baced163471560f6b90c7c31de013f10a7d9b4fb","tree":"ff5f98adf68619028e256784407ae7e56918d848","parents":["4adc141b3901e88b801847812e92b4edff468ece"],"time":"1487578643","author":"Laurent Goudet","summary":"push for pez","message":"push for pez","authorEmail":"laurent@freelancer.com"},"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"687538":{"id":"687538","revisionID":"56417","dateCreated":"1485959474","dateModified":"1485959476","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-ngrx","bookmark":null,"creationMethod":"arc","description":" - aaahhhhhhhhhhhh","unitStatus":"1","lintStatus":"4","changes":[{"id":"9172990","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9172989","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9172988","metadata":{"line:first":6},"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"33","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"compilerOptions\": {\n \"emitDecoratorMetadata\": true,\n \"experimentalDecorators\": true,\n \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n+ \"module\": \"system\",\n \"noEmit\": true,\n \"lib\": [\"es6\", \"dom\"],\n \"noImplicitAny\": true,\n \"strictNullChecks\": true,\n \"skipLibCheck\": true,\n \"target\": \"es5\",\n \"baseUrl\": \".\",\n \"paths\": {\n \"@shared-angular\/*.ts\": [\n \"@shared-angular\/*\/index.ts\"\n ],\n \"server-data\/app-server-environment\": [\n \"app\/mock-app-server-environment\"\n ]\n }\n },\n \"include\": [\n \"**\/*\"\n ],\n \"exclude\": [\n \"**\/*.spec.ts\"\n ],\n \"angularCompilerOptions\": {\n \"genDir\": \"..\/.modules\",\n \"skipMetadataEmit\" : true\n }\n }\n"}]},{"id":"9172987","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9172986","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9172985","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"47","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"47","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter,\n+ ChangeDetectionStrategy, AfterViewInit, OnDestroy } from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <div #scrollArea>\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads\"\n+ (click)=\"select.emit(thread)\"\n+ [thread]=\"thread\"\n+ >\n+ <\/inbox-thread-item>\n+ <span #listBottom><\/span>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent implements AfterViewInit, OnDestroy {\n+ @Input() threads: Thread[];\n+ @Output() select = new EventEmitter<Thread>();\n+ @Output() load = new EventEmitter<number>();\n+ @ViewChild('scrollArea') scrollArea: ElementRef; \n+ @ViewChild('listBottom') listBottom: ElementRef; \n+ observer: IntersectionObserver;\n+\n+ ngAfterViewInit() {\n+\t\t\/\/ TODO: This isn't Reactive! IntersectionObserver should be wrapper into\n+ \/\/ an EventEmitter as manual .disconnect() is brittle.\n+ this.observer = new IntersectionObserver(\n+ () => this.loadMore.emit(5), \/\/ load 5 more threads for now\n+ {\n+ root: this.scrollArea.nativeElement,\n+ rootMargin: '0px',\n+ threshold: 1.0,\n+ }\n+ );\n+ this.observer.observe(this.listBottom.nativeElement);\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+\n+}\n"}]},{"id":"9172984","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9172983","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+ <img src=\"{{thread.avatarUrl}}\" class=\"avatar\">\n+ <div class=\"body\">\n+ <div class=\"body-content-username\">\n+ {{thread.username}}\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{thread.lastMessage}}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9172982","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9172981","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9172980","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9172979","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9172978","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9172977","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9172976","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9172975","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"33","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"21","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n+import { ConfigService } from '@shared-angular\/core';\n import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+\n import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { MessageSortPipe } from '.\/pipes\/message-sort.pipe';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n MessagingModule,\n MessagingInboxRoutingModule,\n ],\n declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessageSortPipe,\n MessagingInboxComponent,\n ],\n+ providers: [\n+ ConfigService,\n+ ]\n })\n export class MessagingInboxModule {\n \n }\n+\n"}]},{"id":"9172974","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"68","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"8","newLength":"74","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component } from '@angular\/core';\n+import { FlStore, FlListObservable, Thread, Message } from '@shared-angular\/core';\n+import { Subject } from 'rxjs\/Subject';\n \n @Component({\n selector: 'messaging-inbox',\n- templateUrl: '.\/messaging-inbox.component.html',\n+ template: `\n+ <div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list\n+ [threads]=\"threads | async\"\n+ (select)=\"setActiveThread($event)\"\n+ (load)=\"loadMoreThreads($event)\"\n+ >\n+ <\/inbox-thread-list>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (message)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+ \n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+ <\/div>\n+ `,\n styleUrls: ['.\/messaging-inbox.component.less'],\n })\n-export class MessagingInboxComponent {}\n+export class MessagingInboxComponent implements OnInit {\n+ threads: FlListObservable<Thread[]>;\n+ threadsLimit = new Subject<number>().startWith(10);\n+ messages: FlListObservable<Message[]>;\n+\n+ constructor(\n+ private store: FlStore,\n+ private router: Router,\n+ private route: ActivatedRoute,\n+ ) {}\n+\n+ ngOnInit() {\n+ this.threads = this.store.list('threads', {\n+ query: {\n+ orderByChild: 'time_updated',\n+ limitToFirst: threadsLimit,\n+ },\n+ });\n+ this.messages = this.route.data\n+ .map(threadId => this.store.list(['messages', threadId]));\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.router.navigate([thread.id], { relativeTo: this.route });\n+ }\n+\n+ loadMoreThreads(count: number) {\n+ this.threadsLimit.emit(count);\n+ }\n+\n+ sendMessage(message: string) {\n+ this.messages.push({ message });\n+ }\n+\n+ \/*createThread() {\n+ this.threads.push();\n+ }*\/\n+\n+}\n"}]},{"id":"9172973","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"38","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n }\n"}]},{"id":"9172972","metadata":[],"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"6","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"6","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n-\n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n"}]},{"id":"9172971","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-sort.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Pipe, PipeTransform } from '@angular\/core';\n+\/*\n+ * Sort messages by (message.time_created || message.client_message_id)\n+*\/\n+@Pipe({name: 'messageSort'})\n+export class MessageSortPipe implements PipeTransform {\n+ transform(messages: Array<any>): Array<any> {\n+ return messages.map((message) => message).sort(\n+ (a, b) => this.timeValue(a) - this.timeValue(b)\n+ );\n+ }\n+\n+ timeValue(message: any): number {\n+ const client_message_id = message.client_message_id\n+ ? Number(message.client_message_id) \/ 1000\n+ : 0;\n+ return Number(message.time_created || client_message_id);\n+ }\n+}\n"}]},{"id":"9172970","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9172969","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9172968","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { ConfigService } from '@shared-angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private configService: ConfigService,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return this.message && this.message.from_user &&\n+ this.message.from_user == this.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9172967","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9172966","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\"\n+ \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() message: EventEmitter<string>;\n+\n+ sendMessage(messageInput: HTMLInputElement) {\n+ this.message.emit(messageInput.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9172965","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9172964","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9172963","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9172962","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9172961","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9172960","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9172959","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9172958","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/publish';\n"}]},{"id":"9172957","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const cookieBase = '';\n-\n+export const notifyServer = '';\n export const flnBillingBaseUrl = '';\n"}]},{"id":"9172956","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"29","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { BrowserModule } from '@angular\/platform-browser';\n import { CoreModule } from '@shared-angular\/core';\n+import { HttpModule } from '@angular\/http';\n import { SharedConfig } from '@shared-angular\/config';\n import { AppComponent } from '.\/app.component';\n import { AppEmptyComponent } from '.\/app-empty.component';\n import { AppRoutingModule } from '.\/app-routing.module';\n import { appConfig } from '.\/app.config';\n \n @NgModule({\n imports: [\n BrowserModule,\n CoreModule,\n+ HttpModule,\n AppRoutingModule,\n ],\n declarations: [\n AppComponent,\n AppEmptyComponent,\n ],\n providers: [\n { provide: SharedConfig, useValue: appConfig },\n ],\n exports: [\n AppComponent,\n ],\n bootstrap: [AppComponent],\n })\n export class AppModule {\n }\n"}]},{"id":"9172955","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"20","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n+import {\n+ cookieBase,\n+ flnBillingBaseUrl,\n+ notifyServer,\n+} from 'server-data\/app-server-environment';\n \n const appConfig = {\n apiBaseUrl: '\/api',\n authBaseUrl: '\/auth',\n authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n facebookAppId: '',\n gafBaseUrl: '',\n userIdCookie: `${cookieBase}_USER_ID`,\n defaultAvatarUrl: '\/img\/unknown.png',\n languageCookie: `${cookieBase}_LANGUAGE`,\n languageCookieDomain: cookieBase,\n languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n flnBillingBaseUrl,\n translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n };\n \n export { appConfig };\n"}]},{"id":"9172954","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"4","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n+import '.\/rxjs-operators';\n+import { Component, Inject, ViewEncapsulation } from '@angular\/core';\n+import { StateModel, RootReducer } from '@shared-angular\/core';\n \n @Component({\n selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n+ template: `<router-outlet><\/router-outlet>`,\n })\n export class AppComponent {\n+ constructor() {}\n }\n"}]},{"id":"9172953","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9172952","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9172951","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9172950","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9172949","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { ActionReducer } from '@ngrx\/store';\n+import { UserActions, UserActionTypes } from '.\/user.actions';\n+import { User } from '.\/user.model';\n+\n+export const usersReducer: ActionReducer<User> =\n+ (state = {}, action: UserActions) => {\n+ switch (action.type) {\n+ case 'FETCHED_USERS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9172948","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9172947","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const UserActionTypes = {\n+ LOAD: type('[Thread] Load'),\n+ LOAD_SUCCESS: type('[Thread] Load success'),\n+};\n+\n+export class LoadAction implements Action {\n+\ttype = ActionTypes.LOAD;\n+\n+ constructor(public payload: Thread) {\n+\n+\n+ }\n+\n+\n+}\n+\n"}]},{"id":"9172946","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { ActionReducer } from '@ngrx\/store';\n+import { Thread } from '.\/thread.model';\n+import * as thread from '.\/thread.actions';\n+import * as message from '..\/message.actions';\n+\n+export const threadsReducer: ActionReducer<Entities<Thread>> =\n+ (state = {}, action: thread.Actions) => {\n+ switch (action.type) {\n+ case thread.LOAD:\n+ action.payload.reduce((threads, thread) => {\n+ threads[thread.id] = thread;\n+ }, {});\n+ return Object.assign({}, state, threads);\n+\n+ case message.RECEIVED_FROM_SOCKET:\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);\n+\n+ default:\n+ return state;\n+ }\n+};\n+\n"}]},{"id":"9172945","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"218","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"218","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+export interface Thread {\n+ attachments: null;\n+ id: number;\n+ message_count: number|null;\n+ folder: string; \/\/ inbox\n+ highlights: null;\n+ is_muted: false;\n+ is_read: true;\n+ is_read_only: null;\n+ message_unread_count: 0;\n+ messages: null;\n+ thread: {\n+ context: {\n+ contest?: ThreadContest;\n+ project?: ThreadProject;\n+ };\n+ id: number;\n+ inactive_members: null;\n+ members: ThreadUser[];\n+ message: {\n+ attachments: null;\n+ client_message_id: null;\n+ from_user: ThreadUser;\n+ id: number;\n+ message: string;\n+ message_source: null;\n+ parent_id: null;\n+ remove_reason: null;\n+ thread_id: Date;\n+ time_created: Date;\n+ };\n+ owner: ThreadUser;\n+ owner_read_privacy: 'members';\n+ read_privacy: 'owner';\n+ thread_read_annotations: null;\n+ thread_type: 'private_chat';\n+ time_created: Date;\n+ user_read_times: null;\n+ warnings: null;\n+ write_privacy: 'owner';\n+ };\n+ thread_events: null;\n+ time_read: Date;\n+ time_updated: Date;\n+}\n+\n+export ThreadUser {\n+\tstatus: {\n+\t\tpayment_verified: null,\n+\t\tidentity_verified: null,\n+\t\temail_verified: true,\n+\t\tdeposit_made: null,\n+\t\tphone_verified: null,\n+\t\tfacebook_connected: null,\n+\t\tprofile_complete: null\n+\t},\n+\tavatar_large: \/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg,\n+\tavatar_cdn: \/\/robots.syd1.fln-dev.net\/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg,\n+\tspam_profile: null,\n+\tsearch_languages: null,\n+\tsupport_status: null,\n+\tlast_name: null,\n+\tsuspended: null,\n+\tprimary_language: en,\n+\ttimezone: {\n+\t\tcountry: AU,\n+\t\toffset: 10,\n+\t\tid: 234,\n+\t\ttimezone: Australia\/NSW\n+\t},\n+\tmembership_package: null,\n+\tqualifications: null,\n+\tid: 8239778,\n+\tbadges: null,\n+\thourly_rate: null,\n+\tresponsiveness: null,\n+\tfirst_name: null,\n+\tdisplay_name: null,\n+\ttagline: null,\n+\taccount_balances: null,\n+\trole: employer,\n+\tlocation: {\n+\t\tadministrative_area: null,\n+\t\tcity: asdfasdf,\n+\t\tcountry: {\n+\t\t\thighres_flag_url: null,\n+\t\t\tcode: null,\n+\t\t\tname: United States,\n+\t\t\tflag_url_cdn: null,\n+\t\t\thighres_flag_url_cdn: null,\n+\t\t\tflag_url: null\n+\t\t},\n+\t\tvicinity: null,\n+\t\tlongitude: null,\n+\t\tfull_address: null,\n+\t\tlatitude: null\n+\t},\n+\tclosed: false,\n+\temail: null,\n+\tusername: yin13,\n+\tis_local: null,\n+\tendorsements: null,\n+\tjobs: null,\n+\temployer_reputation: null,\n+\tregistration_date: 1377186231,\n+\tis_active: null,\n+\tavatar_large_cdn: \/\/robots.syd1.fln-dev.net\/ppic\/2395455\/logo\/8239778\/xIOoN\/profile_logo_.jpg,\n+\tprofile_description: null,\n+\tlimited_account: false,\n+\tportfolio_count: null,\n+\tpreferred_freelancer: null,\n+\ttrue_location: null,\n+\tprimary_currency: {\n+\t\tcode: AUD,\n+\t\tname: Australian Dollar,\n+\t\tcountry: AU,\n+\t\tsign: $,\n+\t\texchange_rate: 0.740923,\n+\t\tid: 3\n+\t},\n+\tmobile_tracking: null,\n+\tchosen_role: both,\n+\treputation: null,\n+\tavatar: \/ppic\/2402984\/logo\/8239778\/profile_logo_8239778.jpg,\n+\tcover_image: null,\n+\tforce_verify: null\n+}\n+\n+ThreadProject {\n+ \"hidebids\": false,\n+ \"files\": null,\n+ \"attachments\": null,\n+ \"bidperiod\": 7,\n+ \"currency\": {\n+ \"code\": \"USD\",\n+ \"name\": \"US Dollar\",\n+ \"country\": \"US\",\n+ \"sign\": \"$\",\n+ \"exchange_rate\": 1,\n+ \"id\": 1\n+ },\n+ \"featured\": true,\n+ \"preview_description\": \"Build a Website asd fasdfasdfasdfasdfasdfBuild a Website asd fasdfasdfasdfasdfasdfBuild a Website as\",\n+ \"upgrades\": {\n+ \"active_prepaid_milestone\": null,\n+ \"NDA\": false,\n+ \"assisted\": null,\n+ \"urgent\": false,\n+ \"featured\": true,\n+ \"nonpublic\": false,\n+ \"fulltime\": false,\n+ \"qualified\": false,\n+ \"sealed\": false\n+ },\n+ \"invited_freelancers\": null,\n+ \"id\": 4911007,\n+ \"active_prepaid_milestone\": null,\n+ \"negotiated\": false,\n+ \"title\": \"Build a Website asd fasdfasdfasdfasdfasdf\",\n+ \"assisted\": null,\n+ \"submitdate\": 1419310395,\n+ \"nda_signatures\": null,\n+ \"nonpublic\": false,\n+ \"location\": {\n+ \"administrative_area\": null,\n+ \"city\": null,\n+ \"country\": {\n+ \"highres_flag_url\": null,\n+ \"code\": null,\n+ \"name\": null,\n+ \"flag_url_cdn\": null,\n+ \"highres_flag_url_cdn\": null,\n+ \"flag_url\": null\n+ },\n+ \"vicinity\": null,\n+ \"longitude\": null,\n+ \"full_address\": null,\n+ \"latitude\": null\n+ },\n+ \"recommended_freelancers\": null,\n+ \"type\": \"fixed\",\n+ \"hireme\": false,\n+ \"owner_id\": 8239506,\n+ \"status\": \"active\",\n+ \"jobs\": null,\n+ \"description\": null,\n+ \"can_post_review\": null,\n+ \"deleted\": false,\n+ \"qualifications\": null,\n+ \"time_free_bids_expire\": null,\n+ \"frontend_project_status\": \"open\",\n+ \"hourly_project_info\": null,\n+ \"true_location\": null,\n+ \"sub_status\": null,\n+ \"time_updated\": null,\n+ \"language\": \"en\",\n+ \"seo_url\": \"PHP-Graphic-Design\/Build-Website-asd-fasdfasdfasdfasdfasdf\",\n+ \"urgent\": false,\n+ \"user_distance\": null,\n+ \"local\": false,\n+ \"time_submitted\": 1419310395,\n+ \"budget\": {\n+ \"currency_id\": null,\n+ \"minimum\": 250,\n+ \"maximum\": 750,\n+ \"project_type\": null,\n+ \"name\": null\n+ },\n+ \"negotiated_bid\": null,\n+ \"bid_stats\": {\n+ \"bid_count\": 0,\n+ \"bid_avg\": null\n+ },\n+ \"hireme_initial_bid\": null,\n+ \"from_user_location\": null\n+ },\n+}\n"}]},{"id":"9172944","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"62","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"62","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { URLSearchParams } from '@angular\/http';\n+import { Effect, Actions } from '@ngrx\/effects';\n+import { ApiHttp } from '..\/api-http.service';\n+import * as thread from '.\/thread.actions';\n+\n+@Injectable()\n+export class ThreadEffects {\n+ constructor(private actions: Actions, private apiHttp: ApiHttp) {}\n+\n+ @Effect()\n+ load: Observable<Action> = this.actions\n+ .ofType(thread.LOAD)\n+ .switchMap(payload => {\n+ const params = new URLSearchParams();\n+ params.set('unread_count', true);\n+ params.set('last_message', true);\n+ params.set('message_details', true);\n+ params.set('context_details', true);\n+ params.set('user_details', true);\n+ return this.apiHttp.get('\/messages\/0.1\/threads\/', { search: params });\n+ })\n+ .mergeMap(result => {\n+ const actions = [];\n+ if (result.threads) {\n+ actions.push(thread.LoadSuccessAction(result.threads));\n+ }\n+ if (result.users) {\n+ actions.push(users.LoadSuccessAction(result.users));\n+ }\n+ if (result.context_details && result.context_details.projects) {\n+ actions.push(\n+ projects.LoadSuccessAction(result.context_details.projects));\n+ }\n+ if (result.context_details && result.context_details.contests) {\n+ contests.LoadSuccessAction(result.context_details.contests);\n+ }\n+ return Observable.from(actions);\n+ })\n+ .catch(error => thread.LoadFailAction(error));\n+\n+ @Effect()\n+ sendMessage: Observable<Action> = this.actions\n+ .ofType(message.SEND_MESSAGE)\n+ .switchMap(({message, threadId}: {string, number}) => {\n+ const payload = {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ from_user: this.selfId,\n+ };\n+ return this.apiHttp.post('\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ payload,\n+ { search: params });\n+ })\n+ .map(result => thread.SendMessageSuccessAction(result))\n+ .catch(error => thread.SendMessageFailAction(error));\n+\n+\n+}\n"}]},{"id":"9172943","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Thread] Load';\n+export const LOAD_SUCCESS = '[Thread] Load Success';\n+export const LOAD_FAIL = '[Thread] Load Fail';\n+export const SEND_MESSAGE = '[Thread] Send Message';\n+export const SEND_MESSAGE_SUCCESS = '[Thread] Send Message Success';\n+export const SEND_MESSAGE_FAIL = '[Thread] Send Message Fail';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Thread[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE;\n+\n+ constructor(public payload: {\n+ message: string,\n+ threadId: number\n+ }) { }\n+}\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE_SUCCESS;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class SendMessageFail implements Action {\n+ type = SEND_MESSAGE_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction\n+ | SendMessageAction\n+ | SendMessageSuccess\n+ | SendMessageFail;\n+\n"}]},{"id":"9172942","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9172941","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9172940","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"61","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"61","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Inject, Injectable } from '@angular\/core';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+import SockJS from 'sockjs';\n+import { ConfigService } from '.\/config.service';\n+\n+@Injectable()\n+export class WebSocketService {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ public constructor(\n+ @Inject(ConfigService) configService: ConfigService,\n+ ) {\n+ this.configService = configService;\n+ }\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const url = this.configService.getSocketUrl();\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ let ws: any = new SockJS(url);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable);\n+ }\n+}\n"}]},{"id":"9172939","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/root.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+\n+import { RootState } from '.\/root-state.model';\n+\n+import { threadReducer } from '.\/thread\/thread.reducer';\n+import { messageReducer } from '.\/message\/message.reducer';\n+import { contestReducer } from '.\/reducers\/contest.reducer';\n+import { projectReducer } from '.\/reducers\/project.reducer';\n+import { userReducer } from '.\/reducers\/user.reducer';\n+\n+import { environment } from '..\/..\/app\/environment';\n+\n+const reducers = {\n+ thread: threadReducer,\n+ message: messageReducer,\n+ user: userReducer,\n+ project: projectReducer,\n+ contest: contestReducer,\n+};\n+\n+export function rootReducer(state: RootState, action: any) {\n+ if (environment.production) {\n+ return compose([combineReducers])(reducers);\n+ } else {\n+ return compose([storeFreeze, combineReducers])(reducers);\n+ }\n+}\n+\n"}]},{"id":"9172938","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/root.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"21","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"21","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Thread } from '.\/thread\/thread.model';\n+import { Entities } from '.\/entities.model';\n+\n+export type FlReference = RootPath|[RootPath, string];\n+\n+export type RootPath = 'users' | 'projects' | 'contests' |\n+ 'threads' | 'messagesByThreads';\n+\n+\/**\n+ * We treat each reducer like a table in a database. This means our top level\n+ * state interface is just a map of keys to inner state types.\n+ *\/\n+export interface RootModel {\n+ users: Entities<User>;\n+ projects: Entities<Project>;\n+ contests: Entities<Contest>;\n+ threads: Entities<Thread>;\n+ messagesByThreads: {\n+ [threadId: string]: Entities<Message>;\n+ };\n+}\n"}]},{"id":"9172937","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/project\/project.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const projectsReducer = (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_PROJECTS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9172936","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/project\/project.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Project {\n+\n+}\n"}]},{"id":"9172935","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"64","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"64","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import * as message from '.\/message.actions';\n+\n+export const messagesReducer = (\n+ state: any = {}, action: any\n+): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_MESSAGES': {\n+ const newThreads: any = {};\n+ action.payload.forEach((message: any) => {\n+ const messageList: Array<any> = (\n+ newThreads[message.thread_id] || state[message.thread_id] || []\n+ ).filter((m: any) => m.id !== message.id);\n+ messageList.push(message);\n+ newThreads[message.thread_id] = messageList;\n+ });\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9172934","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9172933","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { URLSearchParams } from '@angular\/http';\n+import { Effect, Actions } from '@ngrx\/effects';\n+import { ApiHttp } from '..\/api-http.service';\n+import * as message from '.\/message.actions';\n+\n+@Injectable()\n+export class MessageEffects {\n+ constructor(private actions: Actions, private apiHttp: ApiHttp) {}\n+\n+ @Effect()\n+ load: Observable<Action> = this.actions\n+ .ofType(message.LOAD)\n+ .switchMap((threadId: string) => {\n+ const params = new URLSearchParams();\n+ params.set('threads[]', threadId);\n+ params.set('limit', 50);\n+ return this.apiHttp.get('\/messages\/0.1\/messages\/', { search: params });\n+ })\n+ .map(result => message.LoadSuccessAction(result.messages));\n+ .catch(error => message.LoadFailAction(result.messages));\n+\n+}\n"}]},{"id":"9172932","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+export const RECEIVED_FROM_SOCKET = '[Message] Received from socket';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class ReceivedFromSocket implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: { thread_id: string }) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9172931","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9172930","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"6","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"8","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/core.module';\n-export * from '.\/thread.model';\n+export * from '.\/thread\/thread.model';\n export * from '.\/thread.service';\n+export * from '.\/root.reducer';\n+export * from '.\/socket.service';\n+export * from '.\/config.service';\n+\n+export * from '.\/root-state.model';\n"}]},{"id":"9172929","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/foo.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\n+\n+export class Store<T> extends Observable<T> {\n+ constructor() {\n+ super();\n+ }\n+\n+}\n+\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+\n+\n"}]},{"id":"9172928","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/fl-store.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"35","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"35","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Store } from '@ngrx\/core';\n+import { FlReference, RootModel } from '.\/root.model';\n+\n+export class FlStore extends Store<RootModel> {\n+\n+ constructor(\n+ private dispatcher: Observer<Action>,\n+ private _reducer: Observer<ActionReducer<any>>,\n+ state$: Observable<any>\n+ ) {\n+ super();\n+\n+ this.source = state$;\n+ }\n+\n+ list(ref: FlReference, query?: Object) {\n+ const path = !Array.isArray(ref) ? [ref] : ref;\n+ this.dispatcher.next({\n+ type: `GET ${path}`,\n+ payload: query,\n+ });\n+ return new FlListObservable(ref, this.pluck(...path)\n+ .map(entities => Object.keys(entities).map(id => entities[id]))\n+ .distinctUntilChanged());\n+ }\n+\n+ object(ref: Reference, query?: Object) {\n+ const path = !Array.isArray(ref) ? [ref] : ref;\n+ this.dispatch(`LOAD ..`);\n+ return new FlObjectObservable(ref, this.pluck(...path)\n+ .distinctUntilChanged());\n+ }\n+\n+}\n+\n"}]},{"id":"9172927","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/fl-object-observable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Observable } from 'rxjs\/Observable';\n+import { FlReference } from '.\/root.model';\n+\n+export class FlObjectObservable<T> extends Observable<T> {\n+\n+ constructor(public key: FlReference,\n+ subscribe?: <R>(subscriber: Subscriber<R>) => Subscription | Function | void) {\n+ super(subscribe);\n+ }\n+\n+ set(val:any): Promise<void> {\n+\n+ }\n+\n+ update(value: Object): Promise<void> {\n+\n+ }\n+\n+ remove(): Promise<void> {\n+\n+ }\n+\n+}\n"}]},{"id":"9172926","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/fl-list-obversable.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Observable } from 'rxjs\/Observable';\n+import { FlReference } from '.\/root.model';\n+\n+export class FlListObservable<T> extends Observable<T> {\n+\n+ constructor(public ref: FlReference,\n+ subscribe?: <R>(subscriber: Subscriber<R>) => Subscription | Function | void) {\n+ super(subscribe);\n+ }\n+\n+ push(val:any): Promise<void> {\n+\n+ }\n+\n+ update(item, value: Object): Promise<void> {\n+\n+ }\n+\n+ remove(item?:FirebaseOperation): Promise<void> {\n+\n+ }\n+\n+}\n"}]},{"id":"9172925","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/entities.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Entities<T> {\n+ [id: string]: T\n+}\n"}]},{"id":"9172924","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"18","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"24","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule, Optional, SkipSelf } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n \n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n+import { WebSocketService } from '.\/socket.service';\n+import { ConfigService } from '.\/config.service';\n+import { ApiHttp } from '.\/api-http.service';\n+\n+import { rootReducer } from '.\/root.reducer';\n \n @NgModule({\n imports: [\n CommonModule,\n+ StoreModule.provideStore(rootReducer),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n ],\n providers: [\n+ ConfigService,\n ThreadService,\n+ ApiHttp,\n+ [WebSocketService, { provide: ConfigService, useClass: ConfigService }],\n ],\n })\n export class CoreModule {\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n+ if (parentModule) {\n+ throw new Error(`CoreModule has already been loaded. Import Core modules\n+ in the AppModule only.`);\n+ }\n }\n }\n"}]},{"id":"9172923","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/contest\/contest.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const contestsReducer = (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_CONTESTS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9172922","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/contest\/contest.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Contest {\n+\n+}\n"}]},{"id":"9172921","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/config.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"48","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"48","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { cookieBase, notifyServer } from 'server-data\/app-server-environment';\n+\n+@Injectable()\n+export class ConfigService {\n+ private cookieBase: string;\n+ private notifyServer: string;\n+ private selfId: string;\n+ private authHeader: {string: string};\n+ constructor() {\n+ this.cookieBase = cookieBase;\n+ this.notifyServer = notifyServer;\n+ }\n+\n+ public getUserId() {\n+ this.selfId = this.selfId || this.getCookie(`${this.cookieBase}_USER_ID`);\n+ return this.selfId;\n+ }\n+\n+ public getAuthHash() {\n+ return this.getCookie(`${this.cookieBase}_AUTH_HASH_V2`);\n+ }\n+\n+ public getAuthHeader() {\n+ this.authHeader = this.authHeader || {\n+ 'Freelancer-Auth-V2': `${this.getUserId()};${this.getAuthHash()}`,\n+ };\n+ return this.authHeader;\n+ }\n+ public getSocketUrl() {\n+ return this.notifyServer;\n+ }\n+\n+ private getCookie(cName: string) {\n+ const cookies = document.cookie;\n+ if (cookies.length > 0) {\n+ let cStart = cookies.indexOf(`${cName}=`);\n+ if (cStart != -1) {\n+ cStart = cStart + cName.length + 1;\n+ let cEnd = cookies.indexOf(';', cStart);\n+ if (cEnd == -1) cEnd = cookies.length;\n+ return cookies.substring(cStart, cEnd);\n+ }\n+ }\n+ return '';\n+ }\n+}\n"}]},{"id":"9172920","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Response } from '@angular\/http';\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n+ console.log('get...');\n+ return super.get(`\/api\/${url}`, options)\n+ .map((res: Response) => res.json())\n+ .map(body => body.result || [])\n+ .catch(this.handleException);\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ let params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9172919","metadata":{"line:first":17},"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"17","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/\/ These config have to be provided before using the other @shared-angular\n \/\/ modules\n export class SharedConfig {\n apiBaseUrl: string;\n authBaseUrl: string;\n authTokenCookie: string;\n facebookAppId: string;\n gafBaseUrl: string;\n userIdCookie: string;\n defaultAvatarUrl: string;\n languageCookie: string;\n languageCookieDomain: string;\n languageCookieExpires: number;\n flnBillingBaseUrl: string;\n translateModeCookie: string;\n lookingForCookie: string;\n+ notifyServer: string;\n }\n"}]},{"id":"9172918","metadata":{"line:first":154},"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"6","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"400","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n !app_page!}}\n \n {{?app_page?\n <base href=\"\/\" \/>\n ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n+ {{!app_page!\n+\n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n !app_page!}}\n \n <\/head>\n <body data-role=\"page\">\n \n {{!app_page!\n \n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n !app_page!}}\n \n {{?app_page?\n- <fl-app><\/fl-app>\n+ <main style=\"height: 100vh\">\n+ <fl-app><\/fl-app>\n+ <\/main>\n <!-- app-server-environment are environment vars, NOT a mechanism to pass\n data between the server & the client. -->\n <!-- All app environment vars MUST BE static and MUST NOT change\n between pages and\/or users or things would break badly -->\n {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n+ {{<systemjs_server_data('app-server-environment', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_module('app')>}}\n {{<systemjs_module('{{(app_page)}}')>}}\n ?app_page?}}\n \n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9172917","metadata":{"line:first":40},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"19","delLines":"5","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1267","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n },\n \"dependencies\": {\n \"@angular\/common\": \"2.2.4\",\n \"@angular\/compiler\": \"2.2.4\",\n \"@angular\/compiler-cli\": \"2.2.4\",\n \"@angular\/core\": \"2.2.4\",\n+ \"@angular\/http\": \"2.3.1\",\n \"@angular\/platform-browser\": \"2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n \"@angular\/router\": \"3.2.4\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/effects\": \"^2.0.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n \"@types\/jasmine\": \"^2.2.33\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n+ \"ng2-redux\": \"^4.2.1\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n+ \"redux\": \"^3.6.0\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n+ \"rxjs\": \"^5.0.0-rc.4\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n \"tslint\": \"^3.15.1\",\n \"typescript\": \"~2.0.10\",\n \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n+ \"ng2-redux\": \"npm:ng2-redux@4.2.1\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n+ \"redux\": \"npm:redux@3.6.0\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"4adc141b3901e88b801847812e92b4edff468ece":{"commit":"4adc141b3901e88b801847812e92b4edff468ece","tree":"584208491781f77c7c06e7911a9c9e1b55c9d2a0","parents":["403127842a38b9bbd5266e414ad62373deeca53b"],"time":"1485959383","author":"Laurent Goudet","summary":"aaahhhhhhhhhhhh","message":"aaahhhhhhhhhhhh","authorEmail":"laurent@freelancer.com"},"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"686972":{"id":"686972","revisionID":"56417","dateCreated":"1485880480","dateModified":"1485880482","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-ngrx","bookmark":null,"creationMethod":"arc","description":" - add back recevied_from_socket","unitStatus":"1","lintStatus":"4","changes":[{"id":"9162060","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9162059","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9162058","metadata":{"line:first":6},"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"33","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"compilerOptions\": {\n \"emitDecoratorMetadata\": true,\n \"experimentalDecorators\": true,\n \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n+ \"module\": \"system\",\n \"noEmit\": true,\n \"lib\": [\"es6\", \"dom\"],\n \"noImplicitAny\": true,\n \"strictNullChecks\": true,\n \"skipLibCheck\": true,\n \"target\": \"es5\",\n \"baseUrl\": \".\",\n \"paths\": {\n \"@shared-angular\/*.ts\": [\n \"@shared-angular\/*\/index.ts\"\n ],\n \"server-data\/app-server-environment\": [\n \"app\/mock-app-server-environment\"\n ]\n }\n },\n \"include\": [\n \"**\/*\"\n ],\n \"exclude\": [\n \"**\/*.spec.ts\"\n ],\n \"angularCompilerOptions\": {\n \"genDir\": \"..\/.modules\",\n \"skipMetadataEmit\" : true\n }\n }\n"}]},{"id":"9162057","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9162056","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9162055","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads; trackBy:threadId\"\n+ (click)=\"setActive(thread)\"\n+ [thread]=\"thread\"\n+ >\n+ <\/inbox-thread-item>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() active = new EventEmitter<number>();\n+\n+ setActive(thread: Thread) {\n+ this.active.emit(thread);\n+ }\n+\n+ threadId(index: number, thread: Thread) {\n+ return thread.threadId;\n+ }\n+}\n"}]},{"id":"9162054","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9162053","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+ <img src=\"{{thread.avatarUrl}}\" class=\"avatar\">\n+ <div class=\"body\">\n+ <div class=\"body-content-username\">\n+ {{thread.username}}\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{thread.lastMessage}}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9162052","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9162051","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9162050","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9162049","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9162048","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9162047","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9162046","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9162045","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"33","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"21","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n+import { ConfigService } from '@shared-angular\/core';\n import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+\n import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { MessageSortPipe } from '.\/pipes\/message-sort.pipe';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n MessagingModule,\n MessagingInboxRoutingModule,\n ],\n declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessageSortPipe,\n MessagingInboxComponent,\n ],\n+ providers: [\n+ ConfigService,\n+ ]\n })\n export class MessagingInboxModule {\n \n }\n+\n"}]},{"id":"9162044","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"104","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"8","newLength":"111","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component } from '@angular\/core';\n+import { State, ConfigService, WebSocketService, ThreadService } from '@shared-angular\/core';\n+import { } from '@shared-angular\/core';\n+import { Observable } from 'rxjs\/Observable';\n \n @Component({\n selector: 'messaging-inbox',\n templateUrl: '.\/messaging-inbox.component.html',\n styleUrls: ['.\/messaging-inbox.component.less'],\n })\n-export class MessagingInboxComponent {}\n+export class MessagingInboxComponent {\n+ threads: Observable<Thread[]>;\n+ activeThread: Observable<Thread>;\n+\n+ \/\/messages: Observable<Message[]>;\n+\n+ constructor(\n+ private store: Store<State>,\n+ private threadService: ThreadService,\n+ private webSocketService: WebSocketService,\n+ private configService: ConfigService,\n+ ) {\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+\n+\n+ ngOnInit() {\n+ this.threads = this.threadService.threads;\n+ this.activeThread = store.select('activeThread');\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.threadService.setActiveThread(thread);\n+ }\n+\n+ sendMessage(message: string) {\n+ this.actions.sendMessage(input.value, this.activeThread);\n+ }\n+\n+export const threadListSelector = (state: any) => Object.keys(state.threads)\n+ .map(id => state.threads[id]);\n+\n+\n+export const activeThreadIdSelector = (state: any) => state.inbox.activeThread;\n+\n+\n+export const messageListSelector = (state: any) =>\n+ (state.messages[state.inbox.activeThread] || []);\n+of (messageList | async | messageSort)\"\n+\n+ \n+export const otherUserSelector = (state: any, threadId: any) => {\n+ const otherUsers = state.threads[threadId].thread.members\n+ .filter((userId: any) => userId != state.configs.selfId);\n+ let otherUserId: any;\n+ if (otherUsers.length) {\n+ otherUserId = otherUsers[0];\n+ }\n+ if (otherUserId) {\n+ return state.users[otherUserId];\n+ }\n+ return undefined;\n+}\n+\n+export const usernameSelector = (state: any, threadId: any) => {\n+ const otherUser = otherUserSelector(state, threadId);\n+ if (otherUser && otherUser.username) {\n+ return otherUser.username;\n+ }\n+ return '';\n+}\n+\n+export const avatarSelector = (state: any, threadId: any) => {\n+ const otherUser = otherUserSelector(state, threadId);\n+ if (otherUser && otherUser.avatar) {\n+ return otherUser.avatar;\n+ }\n+ return '';\n+}\n+\n+export const threadListSelector = (state: any) => Object.keys(state.threads)\n+ .map((id) => ({\n+ threadId: id,\n+ username: usernameSelector(state, id),\n+ avatarUrl: avatarSelector(state, id),\n+ lastMessage: 'Last message goes here, it needs to be trimmed',\n+ }));\n+\n+\n+}\n"}]},{"id":"9162043","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"38","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n }\n"}]},{"id":"9162042","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"21","delLines":"5","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"6","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n+<div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list [threads]=\"threads | async\"\n+ (activeThread)=\"setActiveThread($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n \n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (send)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+<\/div>\n"}]},{"id":"9162041","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-sort.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Pipe, PipeTransform } from '@angular\/core';\n+\/*\n+ * Sort messages by (message.time_created || message.client_message_id)\n+*\/\n+@Pipe({name: 'messageSort'})\n+export class MessageSortPipe implements PipeTransform {\n+ transform(messages: Array<any>): Array<any> {\n+ return messages.map((message) => message).sort(\n+ (a, b) => this.timeValue(a) - this.timeValue(b)\n+ );\n+ }\n+\n+ timeValue(message: any): number {\n+ const client_message_id = message.client_message_id\n+ ? Number(message.client_message_id) \/ 1000\n+ : 0;\n+ return Number(message.time_created || client_message_id);\n+ }\n+}\n"}]},{"id":"9162040","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9162039","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9162038","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { ConfigService } from '@shared-angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private configService: ConfigService,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return this.message && this.message.from_user &&\n+ this.message.from_user == this.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9162037","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9162036","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\" \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() sendMessage = EventEmitter<string>;\n+\n+ sendMessage(messageInput: HTMLInputElement) {\n+ this.sendMessage.emit(messageInput.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9162035","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9162034","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9162033","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9162032","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9162031","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9162030","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9162029","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9162028","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/publish';\n"}]},{"id":"9162027","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const cookieBase = '';\n-\n+export const notifyServer = '';\n export const flnBillingBaseUrl = '';\n"}]},{"id":"9162026","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"29","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { BrowserModule } from '@angular\/platform-browser';\n import { CoreModule } from '@shared-angular\/core';\n+import { HttpModule } from '@angular\/http';\n import { SharedConfig } from '@shared-angular\/config';\n import { AppComponent } from '.\/app.component';\n import { AppEmptyComponent } from '.\/app-empty.component';\n import { AppRoutingModule } from '.\/app-routing.module';\n import { appConfig } from '.\/app.config';\n \n @NgModule({\n imports: [\n BrowserModule,\n CoreModule,\n+ HttpModule,\n AppRoutingModule,\n ],\n declarations: [\n AppComponent,\n AppEmptyComponent,\n ],\n providers: [\n { provide: SharedConfig, useValue: appConfig },\n ],\n exports: [\n AppComponent,\n ],\n bootstrap: [AppComponent],\n })\n export class AppModule {\n }\n"}]},{"id":"9162025","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"20","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n+import {\n+ cookieBase,\n+ flnBillingBaseUrl,\n+ notifyServer,\n+} from 'server-data\/app-server-environment';\n \n const appConfig = {\n apiBaseUrl: '\/api',\n authBaseUrl: '\/auth',\n authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n facebookAppId: '',\n gafBaseUrl: '',\n userIdCookie: `${cookieBase}_USER_ID`,\n defaultAvatarUrl: '\/img\/unknown.png',\n languageCookie: `${cookieBase}_LANGUAGE`,\n languageCookieDomain: cookieBase,\n languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n flnBillingBaseUrl,\n translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n };\n \n export { appConfig };\n"}]},{"id":"9162024","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"4","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n+import '.\/rxjs-operators';\n+import { Component, Inject, ViewEncapsulation } from '@angular\/core';\n+import { StateModel, RootReducer } from '@shared-angular\/core';\n \n @Component({\n selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n+ template: `<router-outlet><\/router-outlet>`,\n })\n export class AppComponent {\n+ constructor() {}\n }\n"}]},{"id":"9162023","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9162022","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9162021","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9162020","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9162019","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { ActionReducer } from '@ngrx\/store';\n+import { UserActions, UserActionTypes } from '.\/user.actions';\n+import { User } from '.\/user.model';\n+\n+export const usersReducer: ActionReducer<User> =\n+ (state = {}, action: UserActions) => {\n+ switch (action.type) {\n+ case 'FETCHED_USERS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9162018","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9162017","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const UserActionTypes = {\n+ LOAD: type('[Thread] Load'),\n+ LOAD_SUCCESS: type('[Thread] Load success'),\n+};\n+\n+export class LoadAction implements Action {\n+\ttype = ActionTypes.LOAD;\n+\n+ constructor(public payload: Thread) {\n+\n+\n+ }\n+\n+\n+}\n+\n"}]},{"id":"9162016","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { ActionReducer } from '@ngrx\/store';\n+import { Thread } from '.\/thread.model';\n+import * as thread from '.\/thread.actions';\n+import * as message from '..\/message.actions';\n+\n+export const threadsReducer: ActionReducer<Entities<Thread>> =\n+ (state = {}, action: thread.Actions) => {\n+ switch (action.type) {\n+ case thread.LOAD:\n+ action.payload.reduce((threads, thread) => {\n+ threads[thread.id] = thread;\n+ }, {});\n+ return Object.assign({}, state, threads);\n+\n+ case message.RECEIVED_FROM_SOCKET:\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);\n+\n+ default:\n+ return state;\n+ }\n+};\n+\n"}]},{"id":"9162015","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"16","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"16","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Thread {\n+ id: number;\n+ time_updated: number;\n+ is_read: boolean;\n+ thread: {\n+ members: number[];\n+ context: {\n+ type: string;\n+ id: number;\n+ },\n+ thread_type: string;\n+ };\n+ attachments: string[]; \/\/ attachmentIds\n+ messages: string[]; \/\/ messageIds\n+}\n+\n"}]},{"id":"9162014","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"62","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"62","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { URLSearchParams } from '@angular\/http';\n+import { Effect, Actions } from '@ngrx\/effects';\n+import { ApiHttp } from '..\/api-http.service';\n+import * as thread from '.\/thread.actions';\n+\n+@Injectable()\n+export class ThreadEffects {\n+ constructor(private actions: Actions, private apiHttp: ApiHttp) {}\n+\n+ @Effect()\n+ load: Observable<Action> = this.actions\n+ .ofType(thread.LOAD)\n+ .switchMap(payload => {\n+ const params = new URLSearchParams();\n+ params.set('unread_count', true);\n+ params.set('last_message', true);\n+ params.set('message_details', true);\n+ params.set('context_details', true);\n+ params.set('user_details', true);\n+ return this.apiHttp.get('\/messages\/0.1\/threads\/', { search: params });\n+ })\n+ .mergeMap(result => {\n+ const actions = [];\n+ if (result.threads) {\n+ actions.push(thread.LoadSuccessAction(result.threads));\n+ }\n+ if (result.users) {\n+ actions.push(users.LoadSuccessAction(result.users));\n+ }\n+ if (result.context_details && result.context_details.projects) {\n+ actions.push(\n+ projects.LoadSuccessAction(result.context_details.projects));\n+ }\n+ if (result.context_details && result.context_details.contests) {\n+ contests.LoadSuccessAction(result.context_details.contests);\n+ }\n+ return Observable.from(actions);\n+ })\n+ .catch(error => thread.LoadFailAction(error));\n+\n+ @Effect()\n+ sendMessage: Observable<Action> = this.actions\n+ .ofType(message.SEND_MESSAGE)\n+ .switchMap(({message, threadId}: {string, number}) => {\n+ const payload = {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ from_user: this.selfId,\n+ };\n+ return this.apiHttp.post('\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ payload,\n+ { search: params });\n+ })\n+ .map(result => thread.SendMessageSuccessAction(result))\n+ .catch(error => thread.SendMessageFailAction(error));\n+\n+\n+}\n"}]},{"id":"9162013","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Thread] Load';\n+export const LOAD_SUCCESS = '[Thread] Load Success';\n+export const LOAD_FAIL = '[Thread] Load Fail';\n+export const SEND_MESSAGE = '[Thread] Send Message';\n+export const SEND_MESSAGE_SUCCESS = '[Thread] Send Message Success';\n+export const SEND_MESSAGE_FAIL = '[Thread] Send Message Fail';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Thread[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE;\n+\n+ constructor(public payload: {\n+ message: string,\n+ threadId: number\n+ }) { }\n+}\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE_SUCCESS;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class SendMessageFail implements Action {\n+ type = SEND_MESSAGE_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction\n+ | SendMessageAction\n+ | SendMessageSuccess\n+ | SendMessageFail;\n+\n"}]},{"id":"9162012","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9162011","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9162010","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/state.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"16","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"16","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Thread } from '.\/thread\/thread.model';\n+import { List } from '.\/list.model';\n+\n+\/**\n+ * We treat each reducer like a table in a database. This means our top level\n+ * state interface is just a map of keys to inner state types.\n+ *\/\n+export interface State {\n+ users: Entities<User>;\n+ projects: Entities<Project>;\n+ contests: Entities<Contest>;\n+ threads: Entities<Thread>;\n+ messagesByThreads: {\n+ [threadId: string]: Entities<Message>;\n+ };\n+}\n"}]},{"id":"9162009","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"61","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"61","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Inject, Injectable } from '@angular\/core';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+import SockJS from 'sockjs';\n+import { ConfigService } from '.\/config.service';\n+\n+@Injectable()\n+export class WebSocketService {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ public constructor(\n+ @Inject(ConfigService) configService: ConfigService,\n+ ) {\n+ this.configService = configService;\n+ }\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const url = this.configService.getSocketUrl();\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ let ws: any = new SockJS(url);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable);\n+ }\n+}\n"}]},{"id":"9162008","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/root.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+\n+import { RootState } from '.\/root-state.model';\n+\n+import { threadReducer } from '.\/thread\/thread.reducer';\n+import { messageReducer } from '.\/message\/message.reducer';\n+import { contestReducer } from '.\/reducers\/contest.reducer';\n+import { projectReducer } from '.\/reducers\/project.reducer';\n+import { userReducer } from '.\/reducers\/user.reducer';\n+\n+import { environment } from '..\/..\/app\/environment';\n+\n+const reducers = {\n+ thread: threadReducer,\n+ message: messageReducer,\n+ user: userReducer,\n+ project: projectReducer,\n+ contest: contestReducer,\n+};\n+\n+export function rootReducer(state: RootState, action: any) {\n+ if (environment.production) {\n+ return compose([combineReducers])(reducers);\n+ } else {\n+ return compose([storeFreeze, combineReducers])(reducers);\n+ }\n+}\n+\n"}]},{"id":"9162007","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/project\/project.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const projectsReducer = (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_PROJECTS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9162006","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/project\/project.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Project {\n+\n+}\n"}]},{"id":"9162005","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"64","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"64","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import * as message from '.\/message.actions';\n+\n+export const messagesReducer = (\n+ state: any = {}, action: any\n+): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_MESSAGES': {\n+ const newThreads: any = {};\n+ action.payload.forEach((message: any) => {\n+ const messageList: Array<any> = (\n+ newThreads[message.thread_id] || state[message.thread_id] || []\n+ ).filter((m: any) => m.id !== message.id);\n+ messageList.push(message);\n+ newThreads[message.thread_id] = messageList;\n+ });\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9162004","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9162003","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { URLSearchParams } from '@angular\/http';\n+import { Effect, Actions } from '@ngrx\/effects';\n+import { ApiHttp } from '..\/api-http.service';\n+import * as message from '.\/message.actions';\n+\n+@Injectable()\n+export class MessageEffects {\n+ constructor(private actions: Actions, private apiHttp: ApiHttp) {}\n+\n+ @Effect()\n+ load: Observable<Action> = this.actions\n+ .ofType(message.LOAD)\n+ .switchMap((threadId: string) => {\n+ const params = new URLSearchParams();\n+ params.set('threads[]', threadId);\n+ params.set('limit', 50);\n+ return this.apiHttp.get('\/messages\/0.1\/messages\/', { search: params });\n+ })\n+ .map(result => message.LoadSuccessAction(result.messages));\n+ .catch(error => message.LoadFailAction(result.messages));\n+\n+}\n"}]},{"id":"9162002","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+export const RECEIVED_FROM_SOCKET = '[Message] Received from socket';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class ReceivedFromSocket implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: { thread_id: string }) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9162001","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9162000","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"6","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"8","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/core.module';\n-export * from '.\/thread.model';\n+export * from '.\/thread\/thread.model';\n export * from '.\/thread.service';\n+export * from '.\/root.reducer';\n+export * from '.\/socket.service';\n+export * from '.\/config.service';\n+\n+export * from '.\/root-state.model';\n"}]},{"id":"9161999","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/entities.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Entities<T> {\n+ [id: string]: T\n+}\n"}]},{"id":"9161998","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"18","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"24","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule, Optional, SkipSelf } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n \n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n+import { WebSocketService } from '.\/socket.service';\n+import { ConfigService } from '.\/config.service';\n+import { ApiHttp } from '.\/api-http.service';\n+\n+import { rootReducer } from '.\/root.reducer';\n \n @NgModule({\n imports: [\n CommonModule,\n+ StoreModule.provideStore(rootReducer),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n ],\n providers: [\n+ ConfigService,\n ThreadService,\n+ ApiHttp,\n+ [WebSocketService, { provide: ConfigService, useClass: ConfigService }],\n ],\n })\n export class CoreModule {\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n+ if (parentModule) {\n+ throw new Error(`CoreModule has already been loaded. Import Core modules\n+ in the AppModule only.`);\n+ }\n }\n }\n"}]},{"id":"9161997","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/contest\/contest.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const contestsReducer = (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_CONTESTS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9161996","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/contest\/contest.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Contest {\n+\n+}\n"}]},{"id":"9161995","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/config.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"48","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"48","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { cookieBase, notifyServer } from 'server-data\/app-server-environment';\n+\n+@Injectable()\n+export class ConfigService {\n+ private cookieBase: string;\n+ private notifyServer: string;\n+ private selfId: string;\n+ private authHeader: {string: string};\n+ constructor() {\n+ this.cookieBase = cookieBase;\n+ this.notifyServer = notifyServer;\n+ }\n+\n+ public getUserId() {\n+ this.selfId = this.selfId || this.getCookie(`${this.cookieBase}_USER_ID`);\n+ return this.selfId;\n+ }\n+\n+ public getAuthHash() {\n+ return this.getCookie(`${this.cookieBase}_AUTH_HASH_V2`);\n+ }\n+\n+ public getAuthHeader() {\n+ this.authHeader = this.authHeader || {\n+ 'Freelancer-Auth-V2': `${this.getUserId()};${this.getAuthHash()}`,\n+ };\n+ return this.authHeader;\n+ }\n+ public getSocketUrl() {\n+ return this.notifyServer;\n+ }\n+\n+ private getCookie(cName: string) {\n+ const cookies = document.cookie;\n+ if (cookies.length > 0) {\n+ let cStart = cookies.indexOf(`${cName}=`);\n+ if (cStart != -1) {\n+ cStart = cStart + cName.length + 1;\n+ let cEnd = cookies.indexOf(';', cStart);\n+ if (cEnd == -1) cEnd = cookies.length;\n+ return cookies.substring(cStart, cEnd);\n+ }\n+ }\n+ return '';\n+ }\n+}\n"}]},{"id":"9161994","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Response } from '@angular\/http';\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n+ console.log('get...');\n+ return super.get(`\/api\/${url}`, options)\n+ .map((res: Response) => res.json())\n+ .map(body => body.result || [])\n+ .catch(this.handleException);\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ let params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9161993","metadata":{"line:first":17},"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"17","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/\/ These config have to be provided before using the other @shared-angular\n \/\/ modules\n export class SharedConfig {\n apiBaseUrl: string;\n authBaseUrl: string;\n authTokenCookie: string;\n facebookAppId: string;\n gafBaseUrl: string;\n userIdCookie: string;\n defaultAvatarUrl: string;\n languageCookie: string;\n languageCookieDomain: string;\n languageCookieExpires: number;\n flnBillingBaseUrl: string;\n translateModeCookie: string;\n lookingForCookie: string;\n+ notifyServer: string;\n }\n"}]},{"id":"9161992","metadata":{"line:first":154},"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"6","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"400","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n !app_page!}}\n \n {{?app_page?\n <base href=\"\/\" \/>\n ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n+ {{!app_page!\n+\n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n !app_page!}}\n \n <\/head>\n <body data-role=\"page\">\n \n {{!app_page!\n \n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n !app_page!}}\n \n {{?app_page?\n- <fl-app><\/fl-app>\n+ <main style=\"height: 100vh\">\n+ <fl-app><\/fl-app>\n+ <\/main>\n <!-- app-server-environment are environment vars, NOT a mechanism to pass\n data between the server & the client. -->\n <!-- All app environment vars MUST BE static and MUST NOT change\n between pages and\/or users or things would break badly -->\n {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n+ {{<systemjs_server_data('app-server-environment', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_module('app')>}}\n {{<systemjs_module('{{(app_page)}}')>}}\n ?app_page?}}\n \n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9161991","metadata":{"line:first":40},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"19","delLines":"5","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1267","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n },\n \"dependencies\": {\n \"@angular\/common\": \"2.2.4\",\n \"@angular\/compiler\": \"2.2.4\",\n \"@angular\/compiler-cli\": \"2.2.4\",\n \"@angular\/core\": \"2.2.4\",\n+ \"@angular\/http\": \"2.3.1\",\n \"@angular\/platform-browser\": \"2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n \"@angular\/router\": \"3.2.4\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/effects\": \"^2.0.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n \"@types\/jasmine\": \"^2.2.33\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n+ \"ng2-redux\": \"^4.2.1\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n+ \"redux\": \"^3.6.0\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n+ \"rxjs\": \"^5.0.0-rc.4\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n \"tslint\": \"^3.15.1\",\n \"typescript\": \"~2.0.10\",\n \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n+ \"ng2-redux\": \"npm:ng2-redux@4.2.1\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n+ \"redux\": \"npm:redux@3.6.0\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"403127842a38b9bbd5266e414ad62373deeca53b":{"commit":"403127842a38b9bbd5266e414ad62373deeca53b","tree":"ee5831066524e7bc7bc8cb896295b914543f62fd","parents":["789f7fbbadb1396de81eb97ca7ef5d4779b0544a"],"time":"1485880461","author":"Laurent Goudet","summary":"add back recevied_from_socket","message":"add back recevied_from_socket","authorEmail":"laurent@freelancer.com"},"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"686969":{"id":"686969","revisionID":"56417","dateCreated":"1485879553","dateModified":"1485879555","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-ngrx","bookmark":null,"creationMethod":"arc","description":" - trying to stabilized the archi","unitStatus":"1","lintStatus":"4","changes":[{"id":"9161966","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9161965","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9161964","metadata":{"line:first":6},"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"33","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"compilerOptions\": {\n \"emitDecoratorMetadata\": true,\n \"experimentalDecorators\": true,\n \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n+ \"module\": \"system\",\n \"noEmit\": true,\n \"lib\": [\"es6\", \"dom\"],\n \"noImplicitAny\": true,\n \"strictNullChecks\": true,\n \"skipLibCheck\": true,\n \"target\": \"es5\",\n \"baseUrl\": \".\",\n \"paths\": {\n \"@shared-angular\/*.ts\": [\n \"@shared-angular\/*\/index.ts\"\n ],\n \"server-data\/app-server-environment\": [\n \"app\/mock-app-server-environment\"\n ]\n }\n },\n \"include\": [\n \"**\/*\"\n ],\n \"exclude\": [\n \"**\/*.spec.ts\"\n ],\n \"angularCompilerOptions\": {\n \"genDir\": \"..\/.modules\",\n \"skipMetadataEmit\" : true\n }\n }\n"}]},{"id":"9161963","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9161962","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9161961","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads; trackBy:threadId\"\n+ (click)=\"setActive(thread)\"\n+ [thread]=\"thread\"\n+ >\n+ <\/inbox-thread-item>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() active = new EventEmitter<number>();\n+\n+ setActive(thread: Thread) {\n+ this.active.emit(thread);\n+ }\n+\n+ threadId(index: number, thread: Thread) {\n+ return thread.threadId;\n+ }\n+}\n"}]},{"id":"9161960","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9161959","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+ <img src=\"{{thread.avatarUrl}}\" class=\"avatar\">\n+ <div class=\"body\">\n+ <div class=\"body-content-username\">\n+ {{thread.username}}\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{thread.lastMessage}}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9161958","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9161957","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9161956","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9161955","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9161954","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9161953","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9161952","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9161951","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"33","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"21","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n+import { ConfigService } from '@shared-angular\/core';\n import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+\n import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { MessageSortPipe } from '.\/pipes\/message-sort.pipe';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n MessagingModule,\n MessagingInboxRoutingModule,\n ],\n declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessageSortPipe,\n MessagingInboxComponent,\n ],\n+ providers: [\n+ ConfigService,\n+ ]\n })\n export class MessagingInboxModule {\n \n }\n+\n"}]},{"id":"9161950","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"104","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"8","newLength":"111","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component } from '@angular\/core';\n+import { State, ConfigService, WebSocketService, ThreadService } from '@shared-angular\/core';\n+import { } from '@shared-angular\/core';\n+import { Observable } from 'rxjs\/Observable';\n \n @Component({\n selector: 'messaging-inbox',\n templateUrl: '.\/messaging-inbox.component.html',\n styleUrls: ['.\/messaging-inbox.component.less'],\n })\n-export class MessagingInboxComponent {}\n+export class MessagingInboxComponent {\n+ threads: Observable<Thread[]>;\n+ activeThread: Observable<Thread>;\n+\n+ \/\/messages: Observable<Message[]>;\n+\n+ constructor(\n+ private store: Store<State>,\n+ private threadService: ThreadService,\n+ private webSocketService: WebSocketService,\n+ private configService: ConfigService,\n+ ) {\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+\n+\n+ ngOnInit() {\n+ this.threads = this.threadService.threads;\n+ this.activeThread = store.select('activeThread');\n+ }\n+\n+ setActiveThread(thread: Thread) {\n+ this.threadService.setActiveThread(thread);\n+ }\n+\n+ sendMessage(message: string) {\n+ this.actions.sendMessage(input.value, this.activeThread);\n+ }\n+\n+export const threadListSelector = (state: any) => Object.keys(state.threads)\n+ .map(id => state.threads[id]);\n+\n+\n+export const activeThreadIdSelector = (state: any) => state.inbox.activeThread;\n+\n+\n+export const messageListSelector = (state: any) =>\n+ (state.messages[state.inbox.activeThread] || []);\n+of (messageList | async | messageSort)\"\n+\n+ \n+export const otherUserSelector = (state: any, threadId: any) => {\n+ const otherUsers = state.threads[threadId].thread.members\n+ .filter((userId: any) => userId != state.configs.selfId);\n+ let otherUserId: any;\n+ if (otherUsers.length) {\n+ otherUserId = otherUsers[0];\n+ }\n+ if (otherUserId) {\n+ return state.users[otherUserId];\n+ }\n+ return undefined;\n+}\n+\n+export const usernameSelector = (state: any, threadId: any) => {\n+ const otherUser = otherUserSelector(state, threadId);\n+ if (otherUser && otherUser.username) {\n+ return otherUser.username;\n+ }\n+ return '';\n+}\n+\n+export const avatarSelector = (state: any, threadId: any) => {\n+ const otherUser = otherUserSelector(state, threadId);\n+ if (otherUser && otherUser.avatar) {\n+ return otherUser.avatar;\n+ }\n+ return '';\n+}\n+\n+export const threadListSelector = (state: any) => Object.keys(state.threads)\n+ .map((id) => ({\n+ threadId: id,\n+ username: usernameSelector(state, id),\n+ avatarUrl: avatarSelector(state, id),\n+ lastMessage: 'Last message goes here, it needs to be trimmed',\n+ }));\n+\n+\n+}\n"}]},{"id":"9161949","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"38","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n }\n"}]},{"id":"9161948","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"21","delLines":"5","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"6","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n+<div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list [threads]=\"threads | async\"\n+ (activeThread)=\"setActiveThread($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n \n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (send)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+<\/div>\n"}]},{"id":"9161947","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-sort.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Pipe, PipeTransform } from '@angular\/core';\n+\/*\n+ * Sort messages by (message.time_created || message.client_message_id)\n+*\/\n+@Pipe({name: 'messageSort'})\n+export class MessageSortPipe implements PipeTransform {\n+ transform(messages: Array<any>): Array<any> {\n+ return messages.map((message) => message).sort(\n+ (a, b) => this.timeValue(a) - this.timeValue(b)\n+ );\n+ }\n+\n+ timeValue(message: any): number {\n+ const client_message_id = message.client_message_id\n+ ? Number(message.client_message_id) \/ 1000\n+ : 0;\n+ return Number(message.time_created || client_message_id);\n+ }\n+}\n"}]},{"id":"9161946","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9161945","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9161944","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { ConfigService } from '@shared-angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private configService: ConfigService,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return this.message && this.message.from_user &&\n+ this.message.from_user == this.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9161943","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9161942","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\" \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() sendMessage = EventEmitter<string>;\n+\n+ sendMessage(messageInput: HTMLInputElement) {\n+ this.sendMessage.emit(messageInput.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9161941","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9161940","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9161939","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9161938","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9161937","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9161936","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9161935","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9161934","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/publish';\n"}]},{"id":"9161933","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const cookieBase = '';\n-\n+export const notifyServer = '';\n export const flnBillingBaseUrl = '';\n"}]},{"id":"9161932","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"29","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { BrowserModule } from '@angular\/platform-browser';\n import { CoreModule } from '@shared-angular\/core';\n+import { HttpModule } from '@angular\/http';\n import { SharedConfig } from '@shared-angular\/config';\n import { AppComponent } from '.\/app.component';\n import { AppEmptyComponent } from '.\/app-empty.component';\n import { AppRoutingModule } from '.\/app-routing.module';\n import { appConfig } from '.\/app.config';\n \n @NgModule({\n imports: [\n BrowserModule,\n CoreModule,\n+ HttpModule,\n AppRoutingModule,\n ],\n declarations: [\n AppComponent,\n AppEmptyComponent,\n ],\n providers: [\n { provide: SharedConfig, useValue: appConfig },\n ],\n exports: [\n AppComponent,\n ],\n bootstrap: [AppComponent],\n })\n export class AppModule {\n }\n"}]},{"id":"9161931","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"20","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n+import {\n+ cookieBase,\n+ flnBillingBaseUrl,\n+ notifyServer,\n+} from 'server-data\/app-server-environment';\n \n const appConfig = {\n apiBaseUrl: '\/api',\n authBaseUrl: '\/auth',\n authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n facebookAppId: '',\n gafBaseUrl: '',\n userIdCookie: `${cookieBase}_USER_ID`,\n defaultAvatarUrl: '\/img\/unknown.png',\n languageCookie: `${cookieBase}_LANGUAGE`,\n languageCookieDomain: cookieBase,\n languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n flnBillingBaseUrl,\n translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n };\n \n export { appConfig };\n"}]},{"id":"9161930","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"4","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n+import '.\/rxjs-operators';\n+import { Component, Inject, ViewEncapsulation } from '@angular\/core';\n+import { StateModel, RootReducer } from '@shared-angular\/core';\n \n @Component({\n selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n+ template: `<router-outlet><\/router-outlet>`,\n })\n export class AppComponent {\n+ constructor() {}\n }\n"}]},{"id":"9161929","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9161928","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9161927","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9161926","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9161925","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { ActionReducer } from '@ngrx\/store';\n+import { UserActions, UserActionTypes } from '.\/user.actions';\n+import { User } from '.\/user.model';\n+\n+export const usersReducer: ActionReducer<User> =\n+ (state = {}, action: UserActions) => {\n+ switch (action.type) {\n+ case 'FETCHED_USERS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9161924","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9161923","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const UserActionTypes = {\n+ LOAD: type('[Thread] Load'),\n+ LOAD_SUCCESS: type('[Thread] Load success'),\n+};\n+\n+export class LoadAction implements Action {\n+\ttype = ActionTypes.LOAD;\n+\n+ constructor(public payload: Thread) {\n+\n+\n+ }\n+\n+\n+}\n+\n"}]},{"id":"9161922","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"33","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { ActionReducer } from '@ngrx\/store';\n+import { Thread } from '.\/thread.model';\n+import * as thread from '.\/thread.actions';\n+\n+export const threadsReducer: ActionReducer<Entities<Thread>> =\n+ (state = {}, action: thread.Actions) => {\n+ switch (action.type) {\n+ case thread.LOAD:\n+ action.payload.reduce((threads, thread) => {\n+ threads[thread.id] = thread;\n+ }, {});\n+ return Object.assign({}, state, threads);\n+\n+ \/*\n+ \/!\\ Denormalization! \/!\\\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ const thread: any = state[threadId];\n+ if (!thread) {\n+ return state;\n+ }\n+ const now = Date.now();\n+ const newTimeUpdated: any = { time_updated: now };\n+ newThreads[threadId] = Object.assign({}, thread, newTimeUpdated);\n+ return Object.assign({}, state, newThreads);\n+ }*\/\n+\n+ default:\n+ return state;\n+ }\n+};\n+\n"}]},{"id":"9161921","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"16","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"16","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Thread {\n+ id: number;\n+ time_updated: number;\n+ is_read: boolean;\n+ thread: {\n+ members: number[];\n+ context: {\n+ type: string;\n+ id: number;\n+ },\n+ thread_type: string;\n+ };\n+ attachments: string[]; \/\/ attachmentIds\n+ messages: string[]; \/\/ messageIds\n+}\n+\n"}]},{"id":"9161920","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"62","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"62","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { URLSearchParams } from '@angular\/http';\n+import { Effect, Actions } from '@ngrx\/effects';\n+import { ApiHttp } from '..\/api-http.service';\n+import * as thread from '.\/thread.actions';\n+\n+@Injectable()\n+export class ThreadEffects {\n+ constructor(private actions: Actions, private apiHttp: ApiHttp) {}\n+\n+ @Effect()\n+ load: Observable<Action> = this.actions\n+ .ofType(thread.LOAD)\n+ .switchMap(payload => {\n+ const params = new URLSearchParams();\n+ params.set('unread_count', true);\n+ params.set('last_message', true);\n+ params.set('message_details', true);\n+ params.set('context_details', true);\n+ params.set('user_details', true);\n+ return this.apiHttp.get('\/messages\/0.1\/threads\/', { search: params });\n+ })\n+ .mergeMap(result => {\n+ const actions = [];\n+ if (result.threads) {\n+ actions.push(thread.LoadSuccessAction(result.threads));\n+ }\n+ if (result.users) {\n+ actions.push(users.LoadSuccessAction(result.users));\n+ }\n+ if (result.context_details && result.context_details.projects) {\n+ actions.push(\n+ projects.LoadSuccessAction(result.context_details.projects));\n+ }\n+ if (result.context_details && result.context_details.contests) {\n+ contests.LoadSuccessAction(result.context_details.contests);\n+ }\n+ return Observable.from(actions);\n+ })\n+ .catch(error => thread.LoadFailAction(error));\n+\n+ @Effect()\n+ sendMessage: Observable<Action> = this.actions\n+ .ofType(message.SEND_MESSAGE)\n+ .switchMap(({message, threadId}: {string, number}) => {\n+ const payload = {\n+ message,\n+ source: 21,\n+ client_message_id: Date.now().toString(),\n+ thread_id: threadId,\n+ busy: true,\n+ from_user: this.selfId,\n+ };\n+ return this.apiHttp.post('\/messages\/0.1\/threads\/${threadId}\/messages\/',\n+ payload,\n+ { search: params });\n+ })\n+ .map(result => thread.SendMessageSuccessAction(result))\n+ .catch(error => thread.SendMessageFailAction(error));\n+\n+\n+}\n"}]},{"id":"9161919","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"54","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"54","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Thread] Load';\n+export const LOAD_SUCCESS = '[Thread] Load Success';\n+export const LOAD_FAIL = '[Thread] Load Fail';\n+export const SEND_MESSAGE = '[Thread] Send Message';\n+export const SEND_MESSAGE_SUCCESS = '[Thread] Send Message Success';\n+export const SEND_MESSAGE_FAIL = '[Thread] Send Message Fail';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Thread[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE;\n+\n+ constructor(public payload: {\n+ message: string,\n+ threadId: number\n+ }) { }\n+}\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE_SUCCESS;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export class SendMessageFail implements Action {\n+ type = SEND_MESSAGE_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction\n+ | SendMessageAction\n+ | SendMessageSuccess\n+ | SendMessageFail;\n+\n"}]},{"id":"9161918","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9161917","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9161916","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/state.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"16","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"16","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Thread } from '.\/thread\/thread.model';\n+import { List } from '.\/list.model';\n+\n+\/**\n+ * We treat each reducer like a table in a database. This means our top level\n+ * state interface is just a map of keys to inner state types.\n+ *\/\n+export interface State {\n+ users: Entities<User>;\n+ projects: Entities<Project>;\n+ contests: Entities<Contest>;\n+ threads: Entities<Thread>;\n+ messagesByThreads: {\n+ [threadId: string]: Entities<Message>;\n+ };\n+}\n"}]},{"id":"9161915","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"61","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"61","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Inject, Injectable } from '@angular\/core';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+import SockJS from 'sockjs';\n+import { ConfigService } from '.\/config.service';\n+\n+@Injectable()\n+export class WebSocketService {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ public constructor(\n+ @Inject(ConfigService) configService: ConfigService,\n+ ) {\n+ this.configService = configService;\n+ }\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const url = this.configService.getSocketUrl();\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ let ws: any = new SockJS(url);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable);\n+ }\n+}\n"}]},{"id":"9161914","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/root.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+\n+import { RootState } from '.\/root-state.model';\n+\n+import { threadReducer } from '.\/thread\/thread.reducer';\n+import { messageReducer } from '.\/message\/message.reducer';\n+import { contestReducer } from '.\/reducers\/contest.reducer';\n+import { projectReducer } from '.\/reducers\/project.reducer';\n+import { userReducer } from '.\/reducers\/user.reducer';\n+\n+import { environment } from '..\/..\/app\/environment';\n+\n+const reducers = {\n+ thread: threadReducer,\n+ message: messageReducer,\n+ user: userReducer,\n+ project: projectReducer,\n+ contest: contestReducer,\n+};\n+\n+export function rootReducer(state: RootState, action: any) {\n+ if (environment.production) {\n+ return compose([combineReducers])(reducers);\n+ } else {\n+ return compose([storeFreeze, combineReducers])(reducers);\n+ }\n+}\n+\n"}]},{"id":"9161913","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/project\/project.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const projectsReducer = (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_PROJECTS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9161912","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/project\/project.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Project {\n+\n+}\n"}]},{"id":"9161911","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"64","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"64","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import * as message from '.\/message.actions';\n+\n+export const messagesReducer = (\n+ state: any = {}, action: any\n+): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_MESSAGES': {\n+ const newThreads: any = {};\n+ action.payload.forEach((message: any) => {\n+ const messageList: Array<any> = (\n+ newThreads[message.thread_id] || state[message.thread_id] || []\n+ ).filter((m: any) => m.id !== message.id);\n+ messageList.push(message);\n+ newThreads[message.thread_id] = messageList;\n+ });\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9161910","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"15","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"15","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Message {\n+ message_source: string;\n+ attachments: string[]; \/\/ attachmentIds\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9161909","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.effects.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"23","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { URLSearchParams } from '@angular\/http';\n+import { Effect, Actions } from '@ngrx\/effects';\n+import { ApiHttp } from '..\/api-http.service';\n+import * as message from '.\/message.actions';\n+\n+@Injectable()\n+export class MessageEffects {\n+ constructor(private actions: Actions, private apiHttp: ApiHttp) {}\n+\n+ @Effect()\n+ load: Observable<Action> = this.actions\n+ .ofType(message.LOAD)\n+ .switchMap((threadId: string) => {\n+ const params = new URLSearchParams();\n+ params.set('threads[]', threadId);\n+ params.set('limit', 50);\n+ return this.apiHttp.get('\/messages\/0.1\/messages\/', { search: params });\n+ })\n+ .map(result => message.LoadSuccessAction(result.messages));\n+ .catch(error => message.LoadFailAction(result.messages));\n+\n+}\n"}]},{"id":"9161908","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Load Success';\n+export const LOAD_FAIL = '[Message] Load Fail';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Message[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export type Actions\n+ = LoadAction\n+ | LoadSuccessAction\n+ | LoadFailAction;\n+\n"}]},{"id":"9161907","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9161906","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"6","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"8","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/core.module';\n-export * from '.\/thread.model';\n+export * from '.\/thread\/thread.model';\n export * from '.\/thread.service';\n+export * from '.\/root.reducer';\n+export * from '.\/socket.service';\n+export * from '.\/config.service';\n+\n+export * from '.\/root-state.model';\n"}]},{"id":"9161905","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/entities.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Entities<T> {\n+ [id: string]: T\n+}\n"}]},{"id":"9161904","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"18","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"24","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule, Optional, SkipSelf } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n \n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n+import { WebSocketService } from '.\/socket.service';\n+import { ConfigService } from '.\/config.service';\n+import { ApiHttp } from '.\/api-http.service';\n+\n+import { rootReducer } from '.\/root.reducer';\n \n @NgModule({\n imports: [\n CommonModule,\n+ StoreModule.provideStore(rootReducer),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n ],\n providers: [\n+ ConfigService,\n ThreadService,\n+ ApiHttp,\n+ [WebSocketService, { provide: ConfigService, useClass: ConfigService }],\n ],\n })\n export class CoreModule {\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n+ if (parentModule) {\n+ throw new Error(`CoreModule has already been loaded. Import Core modules\n+ in the AppModule only.`);\n+ }\n }\n }\n"}]},{"id":"9161903","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/contest\/contest.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const contestsReducer = (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_CONTESTS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9161902","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/contest\/contest.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface Contest {\n+\n+}\n"}]},{"id":"9161901","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/config.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"48","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"48","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { cookieBase, notifyServer } from 'server-data\/app-server-environment';\n+\n+@Injectable()\n+export class ConfigService {\n+ private cookieBase: string;\n+ private notifyServer: string;\n+ private selfId: string;\n+ private authHeader: {string: string};\n+ constructor() {\n+ this.cookieBase = cookieBase;\n+ this.notifyServer = notifyServer;\n+ }\n+\n+ public getUserId() {\n+ this.selfId = this.selfId || this.getCookie(`${this.cookieBase}_USER_ID`);\n+ return this.selfId;\n+ }\n+\n+ public getAuthHash() {\n+ return this.getCookie(`${this.cookieBase}_AUTH_HASH_V2`);\n+ }\n+\n+ public getAuthHeader() {\n+ this.authHeader = this.authHeader || {\n+ 'Freelancer-Auth-V2': `${this.getUserId()};${this.getAuthHash()}`,\n+ };\n+ return this.authHeader;\n+ }\n+ public getSocketUrl() {\n+ return this.notifyServer;\n+ }\n+\n+ private getCookie(cName: string) {\n+ const cookies = document.cookie;\n+ if (cookies.length > 0) {\n+ let cStart = cookies.indexOf(`${cName}=`);\n+ if (cStart != -1) {\n+ cStart = cStart + cName.length + 1;\n+ let cEnd = cookies.indexOf(';', cStart);\n+ if (cEnd == -1) cEnd = cookies.length;\n+ return cookies.substring(cStart, cEnd);\n+ }\n+ }\n+ return '';\n+ }\n+}\n"}]},{"id":"9161900","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/api-http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"44","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"44","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { Response } from '@angular\/http';\n+\n+@Injectable()\n+export class ApiHttp extends Http {\n+ constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n+ console.log('get...');\n+ return super.get(`\/api\/${url}`, options)\n+ .map((res: Response) => res.json())\n+ .map(body => body.result || [])\n+ .catch(this.handleException);\n+ }\n+\n+ post(url: string, payload: Object, options?: RequestOptionsArgs): Observable<Response> {\n+ return super.post(`\/api\/${url}`, this.serialize(payload), options)\n+ .catch(this.handleException);\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ let params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ return params;\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+}\n"}]},{"id":"9161899","metadata":{"line:first":17},"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"17","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/\/ These config have to be provided before using the other @shared-angular\n \/\/ modules\n export class SharedConfig {\n apiBaseUrl: string;\n authBaseUrl: string;\n authTokenCookie: string;\n facebookAppId: string;\n gafBaseUrl: string;\n userIdCookie: string;\n defaultAvatarUrl: string;\n languageCookie: string;\n languageCookieDomain: string;\n languageCookieExpires: number;\n flnBillingBaseUrl: string;\n translateModeCookie: string;\n lookingForCookie: string;\n+ notifyServer: string;\n }\n"}]},{"id":"9161898","metadata":{"line:first":154},"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"6","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"400","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n !app_page!}}\n \n {{?app_page?\n <base href=\"\/\" \/>\n ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n+ {{!app_page!\n+\n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n !app_page!}}\n \n <\/head>\n <body data-role=\"page\">\n \n {{!app_page!\n \n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n !app_page!}}\n \n {{?app_page?\n- <fl-app><\/fl-app>\n+ <main style=\"height: 100vh\">\n+ <fl-app><\/fl-app>\n+ <\/main>\n <!-- app-server-environment are environment vars, NOT a mechanism to pass\n data between the server & the client. -->\n <!-- All app environment vars MUST BE static and MUST NOT change\n between pages and\/or users or things would break badly -->\n {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n+ {{<systemjs_server_data('app-server-environment', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_module('app')>}}\n {{<systemjs_module('{{(app_page)}}')>}}\n ?app_page?}}\n \n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9161897","metadata":{"line:first":40},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"19","delLines":"5","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1267","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n },\n \"dependencies\": {\n \"@angular\/common\": \"2.2.4\",\n \"@angular\/compiler\": \"2.2.4\",\n \"@angular\/compiler-cli\": \"2.2.4\",\n \"@angular\/core\": \"2.2.4\",\n+ \"@angular\/http\": \"2.3.1\",\n \"@angular\/platform-browser\": \"2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n \"@angular\/router\": \"3.2.4\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/effects\": \"^2.0.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n \"@types\/jasmine\": \"^2.2.33\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n+ \"ng2-redux\": \"^4.2.1\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n+ \"redux\": \"^3.6.0\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n+ \"rxjs\": \"^5.0.0-rc.4\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n \"tslint\": \"^3.15.1\",\n \"typescript\": \"~2.0.10\",\n \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n+ \"ng2-redux\": \"npm:ng2-redux@4.2.1\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n+ \"redux\": \"npm:redux@3.6.0\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"789f7fbbadb1396de81eb97ca7ef5d4779b0544a":{"commit":"789f7fbbadb1396de81eb97ca7ef5d4779b0544a","tree":"9acba5fb86ee456a4389ae276a34e904872fb467","parents":["0181e49cd417b559665eccaaad712d25a4b57151"],"time":"1485879469","author":"Laurent Goudet","summary":"trying to stabilized the archi","message":"trying to stabilized the archi","authorEmail":"laurent@freelancer.com"},"0181e49cd417b559665eccaaad712d25a4b57151":{"commit":"0181e49cd417b559665eccaaad712d25a4b57151","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, ssinatra, O1 Core GAF (Backend)!, #core_gaf_frontend!, gcowan\n\nSubscribers: michael, andrew.boyton\n\nDifferential Revision: https:\/\/phabricator.freelancer.com\/D56417","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"},"685532":{"id":"685532","revisionID":"56417","dateCreated":"1485443772","dateModified":"1485443774","sourceControlBaseRevision":"4c0de6fd7910782442ddcd1fed1973aae5546343","sourceControlPath":null,"sourceControlSystem":"git","branch":"laurent-ngrx","bookmark":null,"creationMethod":"arc","description":null,"unitStatus":"1","lintStatus":"4","changes":[{"id":"9153796","metadata":{"line:first":17},"oldPath":"scripts\/build-assets\/jspm.build.json","currentPath":"scripts\/build-assets\/jspm.build.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"4","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"95","newLength":"98","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"transpiler\": \"babel\",\n \"babelOptions\": {\n \"plugins\": [\n \"angularjs-annotate\",\n \"transform-fl-forward\"\n ]\n },\n \"typescriptOptions\": {\n \"tsconfig\": \"modules\/tsconfig.json\",\n \"typeCheck\": false,\n \"module\": \"es6\",\n \"typings\": {\n \"@angular\/core\": \"index.d.ts\",\n \"@angular\/common\": \"index.d.ts\",\n \"@angular\/compiler\": \"index.d.ts\",\n+ \"@angular\/http\": \"index.d.ts\",\n \"@angular\/platform-browser\": \"index.d.ts\",\n \"@angular\/platform-browser-dynamic\": \"index.d.ts\",\n \"@angular\/router\": \"index.d.ts\",\n- \"rxjs\": \"Rx.d.ts\"\n+ \"rxjs\": \"Rx.d.ts\",\n+ \"redux\": \"index.d.ts\",\n+ \"ng2-redux\": true\n }\n },\n \"packages\": {\n \"modules\": {\n \"defaultExtension\": \"js\",\n \"meta\": {\n \"*.js\": {\n \"loader\": \"babel\",\n \"format\": \"esm\"\n },\n \"*.html\": {\n \"loader\": \"text\"\n },\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"css\": {\n \"meta\": {\n \"*.less\": {\n \"loader\": \"fln-less\"\n }\n }\n },\n \"angular-server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"server-data\": {\n \"defaultExtension\": false,\n \"meta\": {\n \"*\": {\n \"build\": false\n }\n }\n },\n \"fl-angular\": {\n \"meta\": {\n \"*.html\": {\n \"loader\": \"text\"\n }\n },\n \"map\": {\n \"flconfigs\": \"@shared\/angular-flconfigs\",\n \"libnotify\": \"@shared\/angular-libnotify\"\n }\n },\n \".modules\": {\n \"defaultExtension\": \"ts\",\n \"meta\": {\n \"*.ts\": {\n \"loader\": \"ts\",\n \"format\": \"esm\"\n }\n }\n }\n },\n \"paths\": {\n \"@shared-angular\/*\": \".modules\/@shared-angular\/*\/index\",\n \"@shared\/*\": \"modules\/@shared\/*\/index\"\n },\n \"map\": {\n \"server-data\/app-server-environment\": \".modules\/app\/mock-app-server-environment.ts\"\n },\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n"}]},{"id":"9153795","metadata":{"line:first":79},"oldPath":"public\/users\/messages\/index.php","currentPath":"public\/users\/messages\/index.php","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"85","newLength":"86","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <?php\n \n require_once __DIR__.'\/..\/..\/lib\/common.php';\n \n function logic() {\n if (!auth()) {\n header('Location: '.GafConfig::get()->base_url->https.'\/login?goto='.urlsafe_64encode(get_cur_ssl_url()));\n exit();\n }\n \n GoogleAnalyticsHandler::setPageView($vars, '\/messages', true);\n \n \n $_GET['pid'] && $pid = $_GET['pid'];\n $_GET['uid'] && $uid = $_GET['uid'];\n \n if (check_id($pid) && check_id($uid)) {\n try {\n $user = get_user_id();\n $pmb_api = thrift\\Apis::get('messages');\n if (!is_object($pmb_api)) {\n trigger_error('Failed to connect to thrift.');\n header('Location: index.php');\n exit;\n }\n \n $threadFilter = new \\thrift\\messages\\ThreadFilter(array(\n 'contexts' => array(\n new \\thrift\\messages\\Context(array(\n 'type' => \\thrift\\messages\\ContextType::PROJECT,\n 'id' => $pid,\n )),\n ),\n 'thread_members' => array($uid => $uid),\n ));\n $threadProjection = new \\thrift\\messages\\ThreadProjection();\n \n try {\n $threads = $pmb_api->threads_get(\n new \\thrift\\common\\header\\Header(array('user_id' => $user)),\n $threadFilter,\n $threadProjection);\n } catch (Thrift\\Exception\\TException $e) {\n trigger_error('Failed to get threads: '.$e->getMessage());\n header('Location: index.php');\n exit;\n }\n \n try {\n thrift\\Apis::destroy('messages');\n } catch (Exception $e) {\n trigger_error('Unable to close thrift connection: '.$e->getMessage());\n }\n if (count($threads) > 0) {\n header('Location: index.php#\/thread\/'.$threads->threads[0]->id);\n exit;\n } else {\n header('Location: index.php');\n exit;\n }\n } catch (Exception $e) {\n header('Location: index.php');\n exit;\n }\n }\n \n $vars = array();\n $userId = get_user_id();\n $vars['is-responsive'] = true;\n $vars['hide_textads'] = true;\n $vars['page'] = 'users\/messages\/main';\n $vars['customized_stylesheets'] = array(\n 'skin\/inbox-page.less',\n );\n \n \n if (isset($_GET['ng2'])) {\n $vars['app_page'] = 'messaging-inbox';\n+ $vars['critical-css'] = 'homepage';\n return get_template('index_fast', $vars);\n }\n \n return get_template('index_new', $vars);\n }\n \n page('logic', $vars);\n"}]},{"id":"9153794","metadata":{"line:first":6},"oldPath":"public\/static\/modules\/tsconfig.json","currentPath":"public\/static\/modules\/tsconfig.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"33","newLength":"33","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"compilerOptions\": {\n \"emitDecoratorMetadata\": true,\n \"experimentalDecorators\": true,\n \"moduleResolution\": \"node\",\n- \"module\": \"es2015\",\n+ \"module\": \"system\",\n \"noEmit\": true,\n \"lib\": [\"es6\", \"dom\"],\n \"noImplicitAny\": true,\n \"strictNullChecks\": true,\n \"skipLibCheck\": true,\n \"target\": \"es5\",\n \"baseUrl\": \".\",\n \"paths\": {\n \"@shared-angular\/*.ts\": [\n \"@shared-angular\/*\/index.ts\"\n ],\n \"server-data\/app-server-environment\": [\n \"app\/mock-app-server-environment\"\n ]\n }\n },\n \"include\": [\n \"**\/*\"\n ],\n \"exclude\": [\n \"**\/*.spec.ts\"\n ],\n \"angularCompilerOptions\": {\n \"genDir\": \"..\/.modules\",\n \"skipMetadataEmit\" : true\n }\n }\n"}]},{"id":"9153793","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-settings',\n+ template: `\n+ <div class=\"threadSettings\"> THREAD SETTINGS <\/div>\n+ `,\n+ styleUrls: ['.\/thread-settings.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadSettingsComponent {\n+}\n"}]},{"id":"9153792","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-settings\/thread-settings.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadSettings {\n+\tbackground-color: khaki;\n+\theight: 120px;\n+}\n"}]},{"id":"9153791","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"28","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"28","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-list',\n+ template: `\n+ <inbox-thread-item\n+ *ngFor=\"let thread of threads; trackBy:threadId\"\n+ (click)=\"setActive(thread)\"\n+ [thread]=\"thread\"\n+ >\n+ <\/inbox-thread-item>\n+ `,\n+ styleUrls: ['.\/thread-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadListComponent {\n+ @Input() threads: Thread[];\n+ @Output() activeThread = new EventEmitter<number>();\n+\n+ setActive(thread: Thread) {\n+ this.activeThread.emit(thread.threadId);\n+ }\n+\n+ threadId(index: number, thread: Thread) {\n+ return thread.threadId;\n+ }\n+}\n"}]},{"id":"9153790","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-list\/thread-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: lemonchiffon;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9153789","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"24","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"24","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input} from '@angular\/core';\n+import { Thread } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-item',\n+ template: `\n+ <div class=\"threadItem\">\n+ <img src=\"{{thread.avatarUrl}}\" class=\"avatar\">\n+ <div class=\"body\">\n+ <div class=\"body-content-username\">\n+ {{thread.username}}\n+ <\/div>\n+ <div class=\"body-content\">\n+ {{thread.lastMessage}}\n+ <\/div>\n+ <\/div>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/thread-item.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadItemComponent {\n+ @Input() thread: Thread;\n+}\n"}]},{"id":"9153788","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-item\/thread-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"34","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"34","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+ display: flex;\n+ padding: 8px;\n+}\n+\n+.threadItem {\n+ width: 100%;\n+ display: flex;\n+ align-items: center;\n+}\n+\n+.avatar {\n+ width: 48px;\n+ height: 48px;\n+ margin-right: 8px;\n+}\n+\n+.body {\n+ display: flex;\n+ flex-direction: column;\n+ width: 75%;\n+\n+ &-content {\n+ white-space: nowrap;\n+ overflow: hidden;\n+ text-overflow: ellipsis;\n+\n+ &-username {\n+ font-size: large;\n+ }\n+ }\n+\n+}\n+\n"}]},{"id":"9153787","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-header',\n+ template: `\n+ <div class=\"threadHeader\"> PERSONS NAME MAYBE? <\/div>\n+ `,\n+ styleUrls: ['.\/thread-header.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadHeaderComponent {\n+}\n"}]},{"id":"9153786","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-header\/thread-header.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadHeader{\n+\tbackground-color: powderBlue;\n+\theight: 40px;\n+ text-align: center;\n+}\n"}]},{"id":"9153785","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-thread-cta',\n+ template: `\n+ <div class=\"threadCta\"> THREAD CTA <\/div>\n+ `,\n+ styleUrls: ['.\/thread-cta.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxThreadCtaComponent {\n+}\n"}]},{"id":"9153784","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/thread-cta\/thread-cta.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.threadCta{\n+\tbackground-color: aquamarine;\n+\theight: 80px;\n+}\n"}]},{"id":"9153783","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-search',\n+ template: `\n+ <div class=\"search\"> SEARCH BOX <\/div>\n+ `,\n+ styleUrls: ['.\/search.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxSearchComponent {\n+}\n"}]},{"id":"9153782","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/search\/search.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.search {\n+\tbackground-color: darkseagreen;\n+\theight: 40px;\n+}\n"}]},{"id":"9153781","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"33","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"21","newLength":"53","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { UiModule } from '@shared-angular\/ui';\n+import { ConfigService } from '@shared-angular\/core';\n import { MessagingModule } from '@shared-angular\/messaging';\n-import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+\n import { MessagingInboxRoutingModule } from '.\/messaging-inbox-routing.module';\n+import { MessagingInboxComponent } from '.\/messaging-inbox.component';\n+import { InboxAttachmentListComponent } from '.\/attachment-list\/attachment-list.component';\n+import { InboxControlComponent } from '.\/control\/control.component';\n+import { InboxInviteListComponent } from '.\/invite-list\/invite-list.component';\n+import { InboxThreadHeaderComponent } from '.\/thread-header\/thread-header.component';\n+import { InboxThreadCtaComponent } from '.\/thread-cta\/thread-cta.component';\n+import { InboxThreadItemComponent } from '.\/thread-item\/thread-item.component';\n+import { InboxThreadListComponent } from '.\/thread-list\/thread-list.component';\n+import { InboxThreadSettingsComponent } from '.\/thread-settings\/thread-settings.component';\n+import { InboxMessageListComponent } from '.\/message-list\/message-list.component';\n+import { InboxMessageItemComponent } from '.\/message-item\/message-item.component';\n+import { InboxMessageInputComponent } from '.\/message-input\/message-input.component';\n+import { InboxSearchComponent } from '.\/search\/search.component';\n+import { MessageSortPipe } from '.\/pipes\/message-sort.pipe';\n \n @NgModule({\n imports: [\n CommonModule,\n UiModule,\n MessagingModule,\n MessagingInboxRoutingModule,\n ],\n declarations: [\n+ InboxControlComponent,\n+ InboxAttachmentListComponent,\n+ InboxInviteListComponent,\n+ InboxMessageInputComponent,\n+ InboxMessageItemComponent,\n+ InboxMessageListComponent,\n+ InboxThreadCtaComponent,\n+ InboxThreadHeaderComponent,\n+ InboxThreadItemComponent,\n+ InboxThreadListComponent,\n+ InboxThreadSettingsComponent,\n+ InboxSearchComponent,\n+ MessageSortPipe,\n MessagingInboxComponent,\n ],\n+ providers: [\n+ ConfigService,\n+ ]\n })\n export class MessagingInboxModule {\n \n }\n+\n"}]},{"id":"9153780","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"103","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"8","newLength":"110","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component } from '@angular\/core';\n+import { StateModel, ConfigService } from '@shared-angular\/core';\n+import { WebSocketService } from '@shared-angular\/core';\n+import { Observable } from 'rxjs\/Observable';\n \n @Component({\n selector: 'messaging-inbox',\n templateUrl: '.\/messaging-inbox.component.html',\n styleUrls: ['.\/messaging-inbox.component.less'],\n })\n-export class MessagingInboxComponent {}\n+export class MessagingInboxComponent {\n+ threads: Observable<Thread[]>;\n+ messages: Observable<Message[]>;\n+\n+ \/\/ TODO: this should be part of the Router state\n+ activeThread: number;\n+\n+ constructor(\n+ public actions: InboxActions,\n+ private store: Store<StateModel>,\n+ private webSocketService: WebSocketService,\n+ private configService: ConfigService,\n+ ) {\n+ let socket = this.webSocketService.connect().publish();\n+ socket.connect();\n+ this.actions.fetchThreads();\n+ this.actions.setConfigs({selfId: this.configService.getUserId()});\n+\n+ let messageSocketEventStream = socket.filter((e) => {\n+ let data: any;\n+ try {\n+ data = e.data && JSON.parse(e.data);\n+ } catch (e) {\n+ \/\/ Invalid JSON\n+ }\n+ return (data) && data.body &&\n+ data.body.type === 'private' &&\n+ data.body.parent_type === 'messages';\n+ });\n+\n+ messageSocketEventStream.subscribe(\n+ (x: any) => { this.actions.newMessageSocketEvent(x); },\n+ (x: any) => { console.error(\"error\", x); },\n+ () => { console.log(\"Done\"); },\n+ );\n+ }\n+\n+\n+ ngOnInit() {\n+ this.threads = store.select('threads');\n+\n+ }\n+\n+ setActiveThread(threadId: number) {\n+ this.activeThread = threadId;\n+ }\n+\n+ sendMessage(message: string) {\n+ this.actions.sendMessage(input.value, this.activeThread);\n+ }\n+\n+export const threadListSelector = (state: any) => Object.keys(state.threads)\n+ .map(id => state.threads[id]);\n+export const activeThreadIdSelector = (state: any) => state.inbox.activeThread;\n+\n+\n+export const messageListSelector = (state: any) =>\n+ (state.messages[state.inbox.activeThread] || []);\n+of (messageList | async | messageSort)\"\n+\n+ \n+export const otherUserSelector = (state: any, threadId: any) => {\n+ const otherUsers = state.threads[threadId].thread.members\n+ .filter((userId: any) => userId != state.configs.selfId);\n+ let otherUserId: any;\n+ if (otherUsers.length) {\n+ otherUserId = otherUsers[0];\n+ }\n+ if (otherUserId) {\n+ return state.users[otherUserId];\n+ }\n+ return undefined;\n+}\n+\n+export const usernameSelector = (state: any, threadId: any) => {\n+ const otherUser = otherUserSelector(state, threadId);\n+ if (otherUser && otherUser.username) {\n+ return otherUser.username;\n+ }\n+ return '';\n+}\n+\n+export const avatarSelector = (state: any, threadId: any) => {\n+ const otherUser = otherUserSelector(state, threadId);\n+ if (otherUser && otherUser.avatar) {\n+ return otherUser.avatar;\n+ }\n+ return '';\n+}\n+\n+export const threadListSelector = (state: any) => Object.keys(state.threads)\n+ .map((id) => ({\n+ threadId: id,\n+ username: usernameSelector(state, id),\n+ avatarUrl: avatarSelector(state, id),\n+ lastMessage: 'Last message goes here, it needs to be trimmed',\n+ }));\n+\n+\n+}\n"}]},{"id":"9153779","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.less","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"38","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"39","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-.Foo {\n- z-index: 1030;\n+body, html {\n+ height: 100%;\n+}\n+\n+body {\n+ display: flex;\n+ align-items: center;\n+ justify-content: center;\n+ flex-direction: column;\n+ margin: 0;\n+}\n+\n+.Inbox {\n+\tdisplay: flex;\n+\twidth: 100%;\n+\theight: 100%;\n+\n+\t&-col {\n+\t\twidth: 25%;\n+\t\theight: 100%;\n+\t\tborder-right: 1px solid #ccc;\n+\n+\t\t&-left {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t flex-direction: column;\n+\t\t}\n+\t\t&-middle {\n+\t\t\t\twidth: 60%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t\t&-right {\n+\t\t\t\twidth: 20%;\n+\t\t\t\tdisplay: flex;\n+\t\t\t\tflex-direction: column;\n+\t\t}\n+\t}\n }\n"}]},{"id":"9153778","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","currentPath":"public\/static\/modules\/messaging-inbox\/messaging-inbox.component.html","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"21","delLines":"5","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"6","newLength":"22","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-<ui-callout>This is a callout<\/ui-callout>\n+<div class=\"Inbox\">\n+ <div class=\"Inbox-col Inbox-col-left\">\n+ <inbox-control><\/inbox-control>\n+ <inbox-search><\/inbox-search>\n+ <inbox-thread-list [threads]=\"threads | async\"\n+ (activeThread)=\"setActiveThread($event)\">\n+ <\/inbox-thread-list>\n+ <\/div>\n \n-<!-- align left -->\n-<thread-list openChat=\"onOpenChat($event)\"><\/thread-list>\n-<!-- align right -->\n-<!-- <thread-view chat=\"selectedChat\"><\/thread-view> -->\n+ <div class=\"Inbox-col Inbox-col-middle\">\n+ <inbox-thread-header><\/inbox-thread-header>\n+ <inbox-message-list [messages]=\"messages | async\"><\/inbox-message-list>\n+ <inbox-message-input (sendMessage)=\"sendMessage($event)\"><\/inbox-message-input>\n+ <\/div>\n+\n+ <div class=\"Inbox-col Inbox-col-right\">\n+ <inbox-thread-cta><\/inbox-thread-cta>\n+ <inbox-thread-settings><\/inbox-thread-settings>\n+ <inbox-invite-list><\/inbox-invite-list>\n+ <inbox-attachment-list><\/inbox-attachment-list>\n+ <\/div>\n+<\/div>\n"}]},{"id":"9153777","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-sort.pipe.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Pipe, PipeTransform } from '@angular\/core';\n+\/*\n+ * Sort messages by (message.time_created || message.client_message_id)\n+*\/\n+@Pipe({name: 'messageSort'})\n+export class MessageSortPipe implements PipeTransform {\n+ transform(messages: Array<any>): Array<any> {\n+ return messages.map((message) => message).sort(\n+ (a, b) => this.timeValue(a) - this.timeValue(b)\n+ );\n+ }\n+\n+ timeValue(message: any): number {\n+ const client_message_id = message.client_message_id\n+ ? Number(message.client_message_id) \/ 1000\n+ : 0;\n+ return Number(message.time_created || client_message_id);\n+ }\n+}\n"}]},{"id":"9153776","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Input } from '@angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-list',\n+ template: `\n+ <div class=\"messageList\">\n+ <inbox-message-item *ngFor=\"let message messages\"\n+ [message]=\"message\">\n+ <\/inbox-message-item>\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageListComponent {\n+ @Input() messages: Message[];\n+}\n"}]},{"id":"9153775","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-list\/message-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: thistle;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+ position: relative;\n+}\n+\n+.messageList {\n+ position: absolute;\n+ width: 90%;\n+ left: 5%;\n+}\n"}]},{"id":"9153774","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"32","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, Input } from '@angular\/core';\n+import { ConfigService } from '@shared-angular\/core';\n+import { Message } from '@shared-angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-item',\n+ template: `\n+ <div\n+ [ngClass]=\"{\n+ 'isSelfSent': isSelfSent(),\n+ 'isBusy': message.busy,\n+ 'isFailed': message.failed\n+ }\"\n+ >\n+ {{message.message}}\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/message-item.component.less'],\n+})\n+export class InboxMessageItemComponent {\n+ @Input() message: Message;\n+\n+ constructor(\n+ private configService: ConfigService,\n+ ) {}\n+\n+ isSelfSent(): boolean {\n+ return this.message && this.message.from_user &&\n+ this.message.from_user == this.configService.getUserId();\n+ }\n+\n+}\n"}]},{"id":"9153773","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-item\/message-item.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.isSelfSent {\n+ text-align: right;\n+}\n+\n+.isBusy {\n+ color: blue;\n+}\n+\n+.isFailed {\n+ color: red;\n+}\n"}]},{"id":"9153772","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy, Output, EventEmitter } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-message-input',\n+ template: `\n+ <input #message\n+ (keyup.enter)=\"sendMessage(message)\"\n+ class=\"messageInput\" \/>\n+ `,\n+ styleUrls: ['.\/message-input.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxMessageInputComponent {\n+ @Output() sendMessage = EventEmitter<string>;\n+\n+ sendMessage(messageInput: HTMLInputElement) {\n+ this.sendMessage.emit(messageInput.value);\n+ input.value = '';\n+ }\n+}\n"}]},{"id":"9153771","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/message-input\/message-input.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.messageInput {\n+ width: 100%;\n+}\n"}]},{"id":"9153770","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-invite-list',\n+ template: `\n+ <div class=\"inviteList\"> INVITE LIST <\/div>\n+ `,\n+ styleUrls: ['.\/invite-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxInviteListComponent {\n+}\n"}]},{"id":"9153769","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/invite-list\/invite-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.inviteList{\n+\tbackground-color: lightpink;\n+\theight: 120px;\n+}\n"}]},{"id":"9153768","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"12","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"12","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-control',\n+ template: `\n+ <div class=\"control\"> COG -- INBOX -- NEW <\/div>\n+ `,\n+ styleUrls: ['.\/control.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxControlComponent {\n+}\n"}]},{"id":"9153767","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/control\/control.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+.control {\n+\tbackground-color: tomato;\n+\theight: 80px;\n+}\n"}]},{"id":"9153766","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Component, ChangeDetectionStrategy } from '@angular\/core';\n+\n+@Component({\n+ selector: 'inbox-attachment-list',\n+ template: `\n+ <div>\n+ ATTACHMENT LIST\n+ <\/div>\n+ `,\n+ styleUrls: ['.\/attachment-list.component.less'],\n+ changeDetection: ChangeDetectionStrategy.OnPush,\n+})\n+export class InboxAttachmentListComponent {\n+}\n"}]},{"id":"9153765","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/messaging-inbox\/attachment-list\/attachment-list.component.less","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"5","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"5","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+:host {\n+\tbackground-color: skyblue;\n+\tflex: 1;\n+\toverflow-y: scroll;\n+}\n"}]},{"id":"9153764","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/app\/rxjs-operators.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+\/\/ See node_module\/rxjs\/Rxjs.js\n+\/\/ Import just the rxjs statics and operators needed for THIS app.\n+\n+\/\/ Statics\n+import 'rxjs\/add\/observable\/throw';\n+\n+\/\/ Operators\n+import 'rxjs\/add\/operator\/catch';\n+import 'rxjs\/add\/operator\/debounceTime';\n+import 'rxjs\/add\/operator\/distinctUntilChanged';\n+import 'rxjs\/add\/operator\/map';\n+import 'rxjs\/add\/operator\/switchMap';\n+import 'rxjs\/add\/operator\/toPromise';\n+import 'rxjs\/add\/operator\/publish';\n"}]},{"id":"9153763","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","currentPath":"public\/static\/modules\/app\/mock-app-server-environment.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export const cookieBase = '';\n-\n+export const notifyServer = '';\n export const flnBillingBaseUrl = '';\n"}]},{"id":"9153762","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/app\/app.module.ts","currentPath":"public\/static\/modules\/app\/app.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"29","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { BrowserModule } from '@angular\/platform-browser';\n import { CoreModule } from '@shared-angular\/core';\n+import { HttpModule } from '@angular\/http';\n import { SharedConfig } from '@shared-angular\/config';\n import { AppComponent } from '.\/app.component';\n import { AppEmptyComponent } from '.\/app-empty.component';\n import { AppRoutingModule } from '.\/app-routing.module';\n import { appConfig } from '.\/app.config';\n \n @NgModule({\n imports: [\n BrowserModule,\n CoreModule,\n+ HttpModule,\n AppRoutingModule,\n ],\n declarations: [\n AppComponent,\n AppEmptyComponent,\n ],\n providers: [\n { provide: SharedConfig, useValue: appConfig },\n ],\n exports: [\n AppComponent,\n ],\n bootstrap: [AppComponent],\n })\n export class AppModule {\n }\n"}]},{"id":"9153761","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.config.ts","currentPath":"public\/static\/modules\/app\/app.config.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"20","newLength":"23","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { cookieBase,\n- flnBillingBaseUrl } from 'server-data\/app-server-environment';\n+import {\n+ cookieBase,\n+ flnBillingBaseUrl,\n+ notifyServer,\n+} from 'server-data\/app-server-environment';\n \n const appConfig = {\n apiBaseUrl: '\/api',\n authBaseUrl: '\/auth',\n authTokenCookie: `${cookieBase}_AUTH_HASH_V2`,\n facebookAppId: '',\n gafBaseUrl: '',\n userIdCookie: `${cookieBase}_USER_ID`,\n defaultAvatarUrl: '\/img\/unknown.png',\n languageCookie: `${cookieBase}_LANGUAGE`,\n languageCookieDomain: cookieBase,\n languageCookieExpires: 60 * 60 * 24 * 60, \/\/ 60 days\n flnBillingBaseUrl,\n translateModeCookie: `${cookieBase}_TRANSLATE_MODE`,\n lookingForCookie: `${cookieBase}_LOOKING_FOR`,\n };\n \n export { appConfig };\n"}]},{"id":"9153760","metadata":{"line:first":1},"oldPath":"public\/static\/modules\/app\/app.component.ts","currentPath":"public\/static\/modules\/app\/app.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"5","delLines":"4","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"10","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-import { Component } from '@angular\/core';\n+import '.\/rxjs-operators';\n+import { Component, Inject, ViewEncapsulation } from '@angular\/core';\n+import { StateModel, RootReducer } from '@shared-angular\/core';\n \n @Component({\n selector: 'fl-app',\n- template: `\n- <router-outlet><\/router-outlet>\n- `,\n+ template: `<router-outlet><\/router-outlet>`,\n })\n export class AppComponent {\n+ constructor() {}\n }\n"}]},{"id":"9153759","metadata":{"line:first":4},"oldPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/ui\/ui.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"23","newLength":"26","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n import { CalloutComponent } from '.\/callout.component';\n+import { ScrollGlue } from '.\/scroll-glue.directive';\n import { TimeAgoPipe } from '.\/time-ago.pipe';\n import { EllipsisPipe } from '.\/ellipsis.pipe';\n \n @NgModule({\n declarations: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n ],\n exports: [\n TimeAgoPipe,\n EllipsisPipe,\n CalloutComponent,\n+ ScrollGlue,\n ],\n imports: [\n CommonModule,\n ],\n \/\/ \/!\\ DO NOT ADD PROVIDERS HERE\n })\n export class UiModule {}\n"}]},{"id":"9153758","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/ui\/scroll-glue.directive.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"38","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"38","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import {\n+ Directive, ElementRef, Input, AfterContentInit, OnDestroy, HostListener,\n+} from '@angular\/core';\n+\n+@Directive({\n+ selector: '[scroll-glue]',\n+})\n+export class ScrollGlue implements AfterContentInit, OnDestroy {\n+ public el: HTMLElement;\n+ public isLocked: boolean = false;\n+ private observer: MutationObserver;\n+ private lockThreshold: number = 10;\n+\n+ constructor(private element: ElementRef) {\n+ this.el = element.nativeElement;\n+ }\n+\n+ @HostListener('scroll')\n+ onScroll() {\n+ this.isLocked = (\n+ this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight\n+ ) > this.lockThreshold;\n+ }\n+\n+ ngAfterContentInit() {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ this.observer = new MutationObserver((mutations) => {\n+ if (!this.isLocked) {\n+ this.el.scrollTop = this.el.scrollHeight;\n+ }\n+ });\n+ this.observer.observe(this.el, { childList: true, subtree: true });\n+ }\n+\n+ ngOnDestroy() {\n+ this.observer.disconnect();\n+ }\n+}\n"}]},{"id":"9153757","metadata":{"line:first":24},"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-list.component.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"2","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"40","newLength":"40","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { Component, Output, EventEmitter, OnInit } from '@angular\/core';\n import { Thread, ThreadService } from '@shared-angular\/core';\n \n @Component({\n selector: 'thread-list',\n template: `\n <div *ngFor=\"let thread of threads;\">\n - - - - - - - - - - - - - - - - - - - - - -\n <thread-item [thread]=\"thread\"\n openThread=\"onOpenThread($event)\">\n <\/thread-item>\n - - - - - - - - - - - - - - - - - - - - - -\n <\/div>\n `,\n })\n export class ThreadListComponent implements OnInit {\n @Output() openThread = new EventEmitter<Thread>();\n \n threads: Thread[];\n \n constructor(private threadService: ThreadService) {}\n \n getThreads() {\n- this.threads = [{\n+ \/*this.threads = [{\n people: ['Laurent', 'Andrew', 'Geoff'],\n }, {\n people: ['Steven', 'Diego'],\n- }];\n+ }];*\/\n \/\/ this.threadService.getThreads()\n \/\/ .subscribe(threads => this.threads = threads);\n }\n \n ngOnInit() {\n this.getThreads();\n }\n \n onOpenThread($event: Thread) {\n this.openThread.emit($event);\n }\n }\n"}]},{"id":"9153756","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","currentPath":"public\/static\/modules\/@shared-angular\/messaging\/thread-item.component.less","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-div {\n- color: red;\n-}\n"}]},{"id":"9153755","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"14","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"14","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { ActionReducer } from '@ngrx\/store';\n+import { UserActions, UserActionTypes } from '.\/user.actions';\n+import { User } from '.\/user.model';\n+\n+export const usersReducer: ActionReducer<User> =\n+ (state = {}, action: UserActions) => {\n+ switch (action.type) {\n+ case 'FETCHED_USERS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9153754","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"31","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"31","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface User {\n+ id: number;\n+ avatar: string;\n+ email: string;\n+ username: string;\n+ account_balances: {\n+ balances: [{\n+ currency: {\n+ code: string;\n+ name: string;\n+ country: string;\n+ sign: string;\n+ exchange_rate: number;\n+ id: number;\n+ };\n+ amount: number\n+ }]\n+ };\n+ location: {\n+ city: string;\n+ country: {\n+ name: string;\n+ }\n+ };\n+ role: string;\n+ phoneInfo: {\n+ ph: number;\n+ tm: number;\n+ t: number;\n+ };\n+}\n"}]},{"id":"9153753","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/user\/user.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const UserActionTypes = {\n+ LOAD: type('[Thread] Load'),\n+ LOAD_SUCCESS: type('[Thread] Load success'),\n+};\n+\n+export class LoadAction implements Action {\n+\ttype = ActionTypes.LOAD;\n+\n+ constructor(public payload: Thread) {\n+\n+\n+ }\n+\n+\n+}\n+\n"}]},{"id":"9153752","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"18","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { ActionReducer } from '@ngrx\/store';\n+import { ThreadActions, ThreadActionTypes } from '.\/thread.actions';\n+import { Thread } from '.\/thread.model';\n+import { List } from '..\/list.model';\n+\n+export const threadReducer: ActionReducer<List<Thread>> =\n+ (state = {}, action: ThreadActions) => {\n+ switch (action.type) {\n+ case ThreadActionTypes.LOAD_SUCCESS:\n+ action.payload.reduce((threads, thread) => {\n+ threads[thread.id] = thread;\n+ }, {});\n+ return Object.assign({}, state, threads);\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9153751","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"19","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"19","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Message } from '..\/message\/message.model';\n+import { MessageAttachment } from '..\/message-attachment\/message-attachment.model';\n+\n+export interface Thread {\n+ id: number;\n+ time_updated: number;\n+ is_read: boolean;\n+ thread: {\n+ members: number[];\n+ context: {\n+ type: string;\n+ id: number;\n+ },\n+ thread_type: string;\n+ };\n+ attachments: MessageAttachment[];\n+ messages: Message[];\n+}\n+\n"}]},{"id":"9153750","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/thread\/thread.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"140","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"140","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Action } from '@ngrx\/store';\n+\n+export const LOAD = '[Thread] Load';\n+export const LOAD_SUCCESS = '[Thread] Success';\n+export const LOAD_FAIL = '[Thread] Fail';\n+\n+export class LoadAction implements Action {\n+ type = LOAD;\n+}\n+\n+export class LoadSuccessAction implements Action {\n+ type = LOAD_SUCCESS;\n+\n+ constructor(public payload: Thread[]) { }\n+}\n+\n+export class LoadFailAction implements Action {\n+ type = LOAD_FAIL;\n+\n+ constructor(public payload: any) { }\n+}\n+\n+export type ThreadActions\n+ = OpenSidenavAction\n+ | CloseSidenavAction;\n+\n+\n+\n+export class ThreadService {\n+ constructor(\n+ private store: Store,\n+ private http: Http,\n+ ) {}\n+\n+ sendMessage(message: string, threadId: any): void {\n+ const client_message_id = Date.now().toString();\n+\n+ const url = `\/api\/messages\/0.1\/threads\/${threadId}\/messages\/`;\n+\n+ const payload = {\n+ message,\n+ source: 21,\n+ client_message_id,\n+ thread_id: threadId,\n+ busy: true,\n+ from_user: this.selfId,\n+ };\n+\n+ this.store.dispatch(new SendingMessageAction());\n+\n+ this.http.post(url, this.serialize(payload), this.options)\n+ .map(this.extractData((result: any) => result))\n+ .catch(this.handleException)\n+ .subscribe((response: any) => this.sentMessage(response));\n+ }\n+\n+ loadThreads(): void {\n+ this.store.dispatch(new loadAction());\n+\n+ const threadsUrl = (\n+ `\/api\/messages\/0.1\/threads\/` +\n+ `?unread_count=${true}` +\n+ `&last_message=${true}` +\n+ `&message_details=${true}` +\n+ `&context_details=${true}` +\n+ `&user_details=${true}`\n+ );\n+ const projectSelector = (result: any) => {\n+ if (result.context_details && result.context_details.projects) {\n+ return result.context_details.projects;\n+ }\n+ return {};\n+ };\n+ const contestSelector = (result: any) => {\n+ if (result.context_details && result.context_details.contests) {\n+ return result.context_details.contests;\n+ }\n+ return {};\n+ };\n+ const dataSelector = (result: any) => ({\n+ threads: result.threads || [],\n+ users: result.users || {},\n+ projects: projectSelector(result),\n+ contests: contestSelector(result),\n+ });\n+ this.http.get(threadsUrl, this.options)\n+ .map(this.extractData(dataSelector))\n+ .catch(this.handleException)\n+ .subscribe(data => {\n+ this.fetchedThreads(data.threads);\n+ this.fetchedUsers(data.users);\n+ this.fetchedProjects(data.projects);\n+ this.fetchedContests(data.contests);\n+ });\n+ }\n+\n+ \n+\n+\n+\n+\n+@Injectable()\n+class WidgetService {\n+ selectedWidgets: Observable<Widget>\n+ constructor(store:Store){\n+ this.selectedWidgets = Observable\n+ .combineLatest(\n+ store.select('widgets'),\n+ store.select('selection'),\n+ (widgets, selection) => this.computeSelectedWidgets(widgets, selection));\n+ }\n+ private computeSelectedWidgets(widgets, selection){\n+ return widgets.filter(...);\n+ }\n+\n+ \/\/optionally add an action here:\n+ selectWidget(widget){\n+ this.store.dispatch({type: SELECT_WIDGET, payload: widget });\n+ }\n+}\n+\n+}\n+\n+\n+interface Selector<T,V> {\n+ (state: Observable<T>): Observable<V>\n+}\n+\n+\n+\n+\n+export const getThreadList = (state: List<Thread>) => Object.keys(state.threads)\n+ .map((id) => ({\n+ threadId: id,\n+ username: usernameSelector(state, id),\n+ avatarUrl: avatarSelector(state, id),\n+ lastMessage: 'Last message goes here, it needs to be trimmed',\n+ }));\n+\n+\n"}]},{"id":"9153749","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.service.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class ThreadService {\n-\n-}\n"}]},{"id":"9153748","metadata":[],"oldPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/thread.model.ts","awayPaths":[],"oldProperties":{"unix:filemode":"100644"},"newProperties":[],"type":"3","fileType":"1","commitHash":null,"addLines":"0","delLines":"3","hunks":[{"oldOffset":"1","newOffset":"0","oldLength":"3","newLength":"0","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"-export class Thread {\n- people: string[];\n-}\n"}]},{"id":"9153747","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/socket.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"61","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"61","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Inject, Injectable } from '@angular\/core';\n+import { Subject } from 'rxjs\/Subject';\n+import { Observable } from 'rxjs\/Observable';\n+import { Observer } from 'rxjs\/Observer';\n+import SockJS from 'sockjs';\n+import { ConfigService } from '.\/config.service';\n+\n+@Injectable()\n+export class WebSocketService {\n+ private subject: Subject<MessageEvent>;\n+ private configService: ConfigService;\n+ public constructor(\n+ @Inject(ConfigService) configService: ConfigService,\n+ ) {\n+ this.configService = configService;\n+ }\n+ public connect(): Subject<MessageEvent> {\n+ if (!this.subject) {\n+ this.subject = this.create();\n+ }\n+ return this.subject;\n+ }\n+\n+ private create(): Subject<MessageEvent> {\n+ const url = this.configService.getSocketUrl();\n+ const cookies = {\n+ hash: '',\n+ hash2: this.configService.getAuthHash(),\n+ user_id: this.configService.getUserId(),\n+ channels: [3],\n+ };\n+ let ws: any = new SockJS(url);\n+ ws.onopen = () => {\n+ setTimeout(() => {\n+ ws.send(JSON.stringify({\n+ channel: 'auth',\n+ body: cookies,\n+ }));\n+ }, 50);\n+ };\n+\n+ let observable = Observable.create(\n+ (obs: Observer<MessageEvent>) => {\n+ ws.onmessage = obs.next.bind(obs);\n+ ws.onerror = obs.error.bind(obs);\n+ ws.onclose = obs.complete.bind(obs);\n+\n+ return ws.close.bind(ws);\n+ });\n+\n+ let observer = {\n+ next: (data: Object) => {\n+ if (ws.readyState === WebSocket.OPEN) {\n+ ws.send(JSON.stringify(data));\n+ }\n+ },\n+ };\n+\n+ return Subject.create(observer, observable);\n+ }\n+}\n"}]},{"id":"9153746","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/root.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"30","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"30","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { combineReducers } from '@ngrx\/store';\n+import { compose } from '@ngrx\/core\/compose';\n+import { storeFreeze } from 'ngrx-store-freeze';\n+\n+import { RootState } from '.\/root-state.model';\n+\n+import { threadReducer } from '.\/thread\/thread.reducer';\n+import { messageReducer } from '.\/message\/message.reducer';\n+import { contestReducer } from '.\/reducers\/contest.reducer';\n+import { projectReducer } from '.\/reducers\/project.reducer';\n+import { userReducer } from '.\/reducers\/user.reducer';\n+\n+import { environment } from '..\/..\/app\/environment';\n+\n+const reducers = {\n+ thread: threadReducer,\n+ message: messageReducer,\n+ user: userReducer,\n+ project: projectReducer,\n+ contest: contestReducer,\n+};\n+\n+export function rootReducer(state: RootState, action: any) {\n+ if (environment.production) {\n+ return compose([combineReducers])(reducers);\n+ } else {\n+ return compose([storeFreeze, combineReducers])(reducers);\n+ }\n+}\n+\n"}]},{"id":"9153745","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/root.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"10","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"10","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Thread } from '.\/thread\/thread.model';\n+import { List } from '.\/list.model';\n+\n+\/**\n+ * We treat each reducer like a table in a database. This means our top level\n+ * state interface is just a map of keys to inner state types.\n+ *\/\n+export interface RootState {\n+ threads: Thread[];\n+}\n"}]},{"id":"9153744","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/reducers_TO_REMOVE\/inbox.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"11","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"11","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+const defaultState = { activeThread: -1 };\n+\n+export const inboxReducer = (state = defaultState, action: any) => {\n+ switch (action.type) {\n+ case 'SET_INBOX_ACTIVE_THREAD':\n+ return { activeThread: action.payload };\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9153743","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/reducers_TO_REMOVE\/configs.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const configsReducer = (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'LOADED_CONFIG': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9153742","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/project\/project.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const projectsReducer = (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_PROJECTS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9153741","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"64","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"64","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { MessageActions, MessageActionTypes } from '.\/message.actions';\n+\n+export const messagesReducer = (\n+ state: any = {}, action: any\n+): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_MESSAGES': {\n+ const newThreads: any = {};\n+ action.payload.forEach((message: any) => {\n+ const messageList: Array<any> = (\n+ newThreads[message.thread_id] || state[message.thread_id] || []\n+ ).filter((m: any) => m.id !== message.id);\n+ messageList.push(message);\n+ newThreads[message.thread_id] = messageList;\n+ });\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENDING_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .map((message: any) => message);\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'SENT_MESSAGE': {\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(action.payload);\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+ const oldMessage = state[action.payload.thread_id].filter((\n+ (message: any) => ((\n+ message.client_message_id === action.payload.client_message_id\n+ ))\n+ ))[0] || {};\n+ const messageList: Array<any> = (state[action.payload.thread_id] || [])\n+ .filter((message: any) => (\n+ message.client_message_id !== action.payload.client_message_id\n+ ));\n+ messageList.push(Object.assign({}, oldMessage, action.payload));\n+\n+ const threadId: any = action.payload.thread_id;\n+ let newThreads: any = {};\n+ newThreads[threadId] = messageList;\n+ return Object.assign({}, state, newThreads);\n+ }\n+\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9153740","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"17","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"17","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { MessageAttachment } from '..\/message-attachment.model';\n+\n+export interface Message {\n+ message_source: string;\n+ attachments: MessageAttachment[];\n+ client_message_id: number;\n+ parent_id: number;\n+ time_created: number;\n+ thread_id: number;\n+ remove_reason: string;\n+ from_user: number;\n+ message: string;\n+ id: string;\n+ errors: string[];\n+ alerts: string[];\n+}\n+\n"}]},{"id":"9153739","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message\/message.actions.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"27","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"27","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const MessageActionTypes = {\n+ LOAD: type('[Thread] Load'),\n+ LOAD_SUCCESS: type('[Thread] Load success'),\n+};\n+\n+ case 'FETCHED_MESSAGES': {\n+\n+ case 'SENDING_MESSAGE': {\n+\n+ case 'SENT_MESSAGE': {\n+\n+ case 'RECEIVED_MESSAGE_FROM_SOCKET': {\n+\n+\n+export const LOAD = '[Message] Load';\n+export const LOAD_SUCCESS = '[Message] Success';\n+export const LOAD_FAIL = '[Message] Fail';\n+export const SEND_MESSAGE = '[Message] Send';\n+export const SEND_MESSAGE_SUCCESS = '[Message] Send success';\n+export const SEND_MESSAGE_FAIL = '[Message] Send fail';\n+\n+export class SendMessageAction implements Action {\n+ type = SEND_MESSAGE;\n+\n+ constructor(public payload: Message) { }\n+}\n+\n"}]},{"id":"9153738","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/message-attachment\/message-attachment.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"4","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"4","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface MessageAttachment {\n+ message_id: number;\n+ filename: string;\n+}\n"}]},{"id":"9153737","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/list.model.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"3","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"3","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export interface List<T> {\n+ [id: string]: T\n+}\n"}]},{"id":"9153736","metadata":{"line:first":2},"oldPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"6","delLines":"1","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"3","newLength":"8","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" export * from '.\/core.module';\n-export * from '.\/thread.model';\n+export * from '.\/thread\/thread.model';\n export * from '.\/thread.service';\n+export * from '.\/root.reducer';\n+export * from '.\/socket.service';\n+export * from '.\/config.service';\n+\n+export * from '.\/root-state.model';\n"}]},{"id":"9153735","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/inbox.actions_TO_REMOVE.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"180","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"180","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import { NgRedux } from 'ng2-redux';\n+import { StateModel, ConfigService } from '@shared-angular\/core';\n+import { Http, Response, Headers, RequestOptions, URLSearchParams } from '@angular\/http';\n+import { Observable } from 'rxjs\/Observable';\n+impo\n+\n+@Injectable()\n+export class InboxActions {\n+ private selfId: string;\n+ constructor (\n+ private ngRedux: NgRedux<StateModel>,\n+ private http: Http,\n+ private options: RequestOptions,\n+ private configService: ConfigService,\n+ ) {\n+ const authHeader = this.configService.getAuthHeader();\n+ let headers = new Headers(authHeader);\n+ this.options = new RequestOptions({ headers: headers });\n+ this.selfId = this.configService.getUserId();\n+ }\n+\n+ fetchThreads(): void {\n+ this.ngRedux.dispatch({ type: 'FETCHING_THREADS'});\n+\n+ const threadsUrl = (\n+ `\/api\/messages\/0.1\/threads\/` +\n+ `?unread_count=${true}` +\n+ `&last_message=${true}` +\n+ `&message_details=${true}` +\n+ `&context_details=${true}` +\n+ `&user_details=${true}`\n+ );\n+ const projectSelector = (result: any) => {\n+ if (result.context_details && result.context_details.projects) {\n+ return result.context_details.projects;\n+ }\n+ return {};\n+ };\n+ const contestSelector = (result: any) => {\n+ if (result.context_details && result.context_details.contests) {\n+ return result.context_details.contests;\n+ }\n+ return {};\n+ };\n+ const dataSelector = (result: any) => ({\n+ threads: result.threads || [],\n+ users: result.users || {},\n+ projects: projectSelector(result),\n+ contests: contestSelector(result),\n+ });\n+ this.http.get(threadsUrl, this.options)\n+ .map(this.extractData(dataSelector))\n+ .catch(this.handleException)\n+ .subscribe(data => {\n+ this.fetchedThreads(data.threads);\n+ this.fetchedUsers(data.users);\n+ this.fetchedProjects(data.projects);\n+ this.fetchedContests(data.contests);\n+ });\n+ }\n+\n+ fetchedUsers(users: any) {\n+ this.ngRedux.dispatch({type: 'FETCHED_USERS', payload: users});\n+ }\n+\n+ fetchedContests(contests: any) {\n+ this.ngRedux.dispatch({type: 'FETCHED_CONTESTS', payload: contests});\n+ }\n+\n+ fetchedProjects(projects: any) {\n+ this.ngRedux.dispatch({type: 'FETCHED_PROJECTS', payload: projects});\n+ }\n+\n+ fetchedThreads(threads: [any]) {\n+ this.ngRedux.dispatch({type: 'FETCHED_THREADS', payload: threads});\n+ }\n+\n+ fetchMessages(threadId: any): void {\n+ this.ngRedux.dispatch({ type: 'FETCHING_MESSAGES'});\n+\n+ const messagesUrl = (\n+ `\/api\/messages\/0.1\/messages\/` +\n+ `?threads[]=${threadId}` +\n+ `&limit=${50}`\n+ );\n+ const messagesSelector = (result: any) => result.messages || [];\n+ this.http.get(messagesUrl, this.options)\n+ .map(this.extractData(messagesSelector))\n+ .catch(this.handleException)\n+ .subscribe(data => this.fetchedMessages(data));\n+ }\n+\n+ fetchedMessages(messages: [any]) {\n+ this.ngRedux.dispatch({type: 'FETCHED_MESSAGES', payload: messages});\n+ }\n+\n+ sendMessage(message: string, threadId: any): void {\n+ const client_message_id = Date.now().toString();\n+\n+ const url = `\/api\/messages\/0.1\/threads\/${threadId}\/messages\/`;\n+ const payload = {\n+ message,\n+ source: 21,\n+ client_message_id,\n+ thread_id: threadId,\n+ busy: true,\n+ from_user: this.selfId,\n+ };\n+\n+ this.ngRedux.dispatch({\n+ type: 'SENDING_MESSAGE',\n+ payload\n+ });\n+\n+ this.http.post(url, this.serialize(payload), this.options)\n+ .map(this.extractData((result: any) => result))\n+ .catch(this.handleException)\n+ .subscribe((response: any) => this.sentMessage(response));\n+ }\n+\n+ sentMessage(payload: any) {\n+ this.ngRedux.dispatch({\n+ type: 'SENT_MESSAGE', payload\n+ });\n+ }\n+\n+ setActiveThread(threadId: any) {\n+ this.ngRedux.dispatch({type: 'SET_INBOX_ACTIVE_THREAD', payload: threadId});\n+ }\n+\n+ newMessageSocketEvent(e: any) {\n+ let data = JSON.parse(e.data).body.data;\n+ let payload = {\n+ from_user: data.from_user,\n+ message: data.message,\n+ client_message_id: data.client_message_id,\n+ thread_id: data.thread_id,\n+ id: data.id,\n+ time_created: data.time_created,\n+ }\n+ this.ngRedux.dispatch({type: 'RECEIVED_MESSAGE_FROM_SOCKET', payload});\n+ }\n+\n+ setConfigs(configs: any) {\n+ this.ngRedux.dispatch({type: 'LOADED_CONFIGS', payload: configs});\n+ }\n+\n+ private handleException(error: Response | any) {\n+ \/\/ In a real world app, we might use a remote logging infrastructure\n+ let errMsg: string;\n+ if (error instanceof Response) {\n+ const body = error.json() || '';\n+ const err = body.error || JSON.stringify(body);\n+ errMsg = `${error.status} - ${error.statusText || ''} ${err}`;\n+ } else {\n+ errMsg = error.message ? error.message : error.toString();\n+ }\n+ console.error(errMsg);\n+ return Observable.throw(errMsg);\n+ }\n+\n+ private extractData (selector: Function) {\n+ return (res: Response) => {\n+ let body = res.json();\n+ if (body.result) {\n+ return selector(body.result);\n+ }\n+ return [];\n+ }\n+ }\n+\n+ private serialize(obj: Object): URLSearchParams {\n+ let params: URLSearchParams = new URLSearchParams();\n+ Object.keys(obj).forEach((key: string) => {\n+ params.set(key, (<any>obj)[key]);\n+ });\n+ return params;\n+ }\n+}\n"}]},{"id":"9153734","metadata":{"line:first":3},"oldPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","currentPath":"public\/static\/modules\/@shared-angular\/core\/core.module.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"16","delLines":"8","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"24","newLength":"32","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" import { NgModule, Optional, SkipSelf } from '@angular\/core';\n import { CommonModule } from '@angular\/common';\n-import { ThreadService } from '.\/thread.service';\n+import { StoreModule } from '@ngrx\/store';\n+import { StoreDevtoolsModule } from '@ngrx\/store-devtools';\n \n-function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {\n- if (parentModule) {\n- throw new Error(`${moduleName} has already been loaded. Import Core modules\n- in the AppModule only.`);\n- }\n-}\n+import { WebSocketService } from '.\/socket.service';\n+import { ConfigService } from '.\/config.service';\n+\n+import { rootReducer } from '.\/root.reducer';\n \n @NgModule({\n imports: [\n CommonModule,\n+ StoreModule.provideStore(rootReducer),\n+ StoreDevtoolsModule.instrumentOnlyWithExtension({\n+ maxAge: 5, \n+ }),\n ],\n providers: [\n+ ConfigService,\n ThreadService,\n+ [WebSocketService, { provide: ConfigService, useClass: ConfigService }],\n ],\n })\n export class CoreModule {\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n- throwIfAlreadyLoaded(parentModule, 'CoreModule');\n+ if (parentModule) {\n+ throw new Error(`CoreModule has already been loaded. Import Core modules\n+ in the AppModule only.`);\n+ }\n }\n }\n"}]},{"id":"9153733","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/contest\/contest.reducer.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"9","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"9","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+export const contestsReducer = (state = {}, action: any): Object => {\n+ switch (action.type) {\n+ case 'FETCHED_CONTESTS': {\n+ return Object.assign({}, state, action.payload);\n+ }\n+ default:\n+ return state;\n+ }\n+};\n"}]},{"id":"9153732","metadata":{"line:first":1},"oldPath":null,"currentPath":"public\/static\/modules\/@shared-angular\/core\/config.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"48","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"48","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+import { Injectable } from '@angular\/core';\n+import SockJS from 'sockjs';\n+import { cookieBase, notifyServer } from 'server-data\/app-server-environment';\n+\n+@Injectable()\n+export class ConfigService {\n+ private cookieBase: string;\n+ private notifyServer: string;\n+ private selfId: string;\n+ private authHeader: {string: string};\n+ constructor() {\n+ this.cookieBase = cookieBase;\n+ this.notifyServer = notifyServer;\n+ }\n+\n+ public getUserId() {\n+ this.selfId = this.selfId || this.getCookie(`${this.cookieBase}_USER_ID`);\n+ return this.selfId;\n+ }\n+\n+ public getAuthHash() {\n+ return this.getCookie(`${this.cookieBase}_AUTH_HASH_V2`);\n+ }\n+\n+ public getAuthHeader() {\n+ this.authHeader = this.authHeader || {\n+ 'Freelancer-Auth-V2': `${this.getUserId()};${this.getAuthHash()}`,\n+ };\n+ return this.authHeader;\n+ }\n+ public getSocketUrl() {\n+ return this.notifyServer;\n+ }\n+\n+ private getCookie(cName: string) {\n+ const cookies = document.cookie;\n+ if (cookies.length > 0) {\n+ let cStart = cookies.indexOf(`${cName}=`);\n+ if (cStart != -1) {\n+ cStart = cStart + cName.length + 1;\n+ let cEnd = cookies.indexOf(';', cStart);\n+ if (cEnd == -1) cEnd = cookies.length;\n+ return cookies.substring(cStart, cEnd);\n+ }\n+ }\n+ return '';\n+ }\n+}\n"}]},{"id":"9153731","metadata":{"line:first":17},"oldPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","currentPath":"public\/static\/modules\/@shared-angular\/config\/index.ts","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"1","delLines":"0","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"17","newLength":"18","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" \/\/ These config have to be provided before using the other @shared-angular\n \/\/ modules\n export class SharedConfig {\n apiBaseUrl: string;\n authBaseUrl: string;\n authTokenCookie: string;\n facebookAppId: string;\n gafBaseUrl: string;\n userIdCookie: string;\n defaultAvatarUrl: string;\n languageCookie: string;\n languageCookieDomain: string;\n languageCookieExpires: number;\n flnBillingBaseUrl: string;\n translateModeCookie: string;\n lookingForCookie: string;\n+ notifyServer: string;\n }\n"}]},{"id":"9153730","metadata":{"line:first":154},"oldPath":"public\/htm\/index_fast.htm","currentPath":"public\/htm\/index_fast.htm","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"6","delLines":"2","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"396","newLength":"400","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" <!DOCTYPE html>\n <html lang=\"{{LANGUAGE_CODE}}\" class=\"{{?is-responsive? is-responsive?is-responsive?}}{{?is-mobile-first? is-mobile-first?is-mobile-first?}}\">\n <head>\n <!-- Critical path meta tags only -->\n <meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\"\/>\n <meta http-equiv=\"Content-Language\" content=\"{{LANGUAGE_CODE}}\">\n <meta http-equiv=\"x-dns-prefetch-control\" content=\"on\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n <title>{{?meta.title?{{meta.title}}?meta.title?}}{{!meta.title!{{SITE_NAME}} | {{_Online Jobs | Freelance Employment | Outsourcing Services | Programmers | Web Design | Freelancers_}}!meta.title!}}<\/title>\n <link rel=\"dns-prefetch\" href=\"\/\/cdn2.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn3.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn4.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn5.f-cdn.com\">\n <link rel=\"dns-prefetch\" href=\"\/\/cdn6.f-cdn.com\">\n \n {{!app_page!\n <!-- Google Experiment. ga_exp.js is special, don't include any script in the head! -->\n {{<tracking\/google-analytics-experiments>}}\n !app_page!}}\n \n {{?app_page?\n <base href=\"\/\" \/>\n ?app_page?}}\n \n <!-- Font face handling for an FOFT rendering approach -->\n <style>\n @font-face {\n font-family: 'RobotoSubset';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n \n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot');\n src: url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto-regular'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-regular\/Roboto-regular.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: normal;\n font-style: italic;\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot');\n src: url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Italic'),\n local('Roboto-Italic'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-italic\/Roboto-italic.svg#Roboto') format('svg');\n }\n @font-face {\n font-family: 'Roboto';\n font-weight: bold;\n font-style: normal;\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot');\n src: url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.eot?#iefix') format('embedded-opentype'),\n local('Roboto'),\n local('Roboto Bold'),\n local('Roboto-700'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff2') format('woff2'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.woff') format('woff'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.ttf') format('truetype'),\n url('\/static\/css\/fonts\/roboto-bold\/Roboto-700.svg#Roboto') format('svg');\n }\n \n \/* Prevent FOIT *\/\n .is-webfont-not-loaded body {\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n letter-spacing: -0.02em;\n }\n \n .is-webfont-subset body {\n font-family: 'RobotoSubset', 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n }\n <\/style>\n \n <script>\n (function() {\n {{<js\/fontfaceobserver>}}\n var root = document.documentElement;\n root.classList.add('is-webfont-not-loaded');\n var fontSubset = new FontFaceObserver('RobotoSubset');\n var fontNormal = new FontFaceObserver('Roboto');\n var fontBold = new FontFaceObserver('Roboto', { weight: 700 });\n var fontItalic = new FontFaceObserver('Roboto', { style: 'italic' });\n fontSubset.load(null, 10000).then(function () {\n root.classList.remove('is-webfont-not-loaded');\n root.classList.add('is-webfont-subset');\n Promise.all([fontNormal.load(null, 30000), fontBold.load(null, 30000), fontItalic.load(null, 30000)])\n .then(function () {\n root.classList.remove('is-webfont-subset');\n });\n });\n })();\n <\/script>\n \n- {{!app_page!\n \n <!-- FIXME: all these globals should be replaced by server-data -->\n <script>\n window._t = [];\n window._lt = [];\n window._ttref = [];\n _ttref.push(['_setCookie']);\n <\/script>\n \n <style>\n [ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {\n display: none !important;\n }\n <\/style>\n \n {{?critical-css?\n <!-- Critical CSS -->\n {{<cdn:inline_critical_css('{{critical-css}}')>}}\n <script>\n function onStylesheetLoad(linkEl) {\n function listener() {\n if (\/^(?:interactive|complete)$\/.test(document.readyState)) {\n document.removeEventListener('DOMContentLoaded', listener);\n linkEl.rel='stylesheet';\n }\n };\n document.addEventListener('DOMContentLoaded', listener);\n listener();\n }\n <\/script>\n {{?customized_stylesheets?{{#customized_stylesheets#\n <link rel=\"preload\" href=\"{{<cdn:asset_url_css('{{customized_stylesheets.__i}}')>}}\" as=\"style\" onload=\"onStylesheetLoad(this)\">\n #customized_stylesheets#}}?customized_stylesheets?}}\n <noscript>\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n <\/noscript>\n ?critical-css?}}\n \n+ {{!app_page!\n+\n {{!critical-css!\n <!-- Render-blocking styles -->\n {{?customized_stylesheets?{{#customized_stylesheets#\n {{<cdn:asset_tag_css('{{customized_stylesheets.__i}}')>}}\n #customized_stylesheets#}}?customized_stylesheets?}}\n !critical-css!}}\n \n {{?meta.description?<meta name=\"description\" content=\"{{meta.description}}\"\/>?meta.description?}}\n {{!meta.description!{{<meta-description>}}!meta.description!}}\n \n {{?meta.facebook_title?<meta property=\"og:title\" content=\"{{meta.facebook_title}}\"\/>?meta.facebook_title?}}\n {{?meta.facebook_description?<meta property=\"og:description\" content=\"{{meta.facebook_description}}\"\/>?meta.facebook_description?}}\n {{?meta.facebook_image?\n {{#meta.facebook_image#<meta property=\"og:image\" content=\"{{meta.facebook_image.__i}}\"\/>#meta.facebook_image#}}\n ?meta.facebook_image?}}\n {{!meta.facebook_image!<meta property=\"og:image\" content=\"{{<cdn:asset_url('\/img\/facebook\/default.jpg')>}}\"\/>!meta.facebook_image!}}\n \n {{?meta.app_cards?\n <!-- iOS App Links -->\n <meta property=\"al:ios:url\" content=\"freelancer:\/\/{{meta.app_url}}\" \/>\n <meta property=\"al:ios:app_store_id\" content=\"{{meta.app_store_id}}\" \/>\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- Android App Links -->\n <meta property=\"al:android:url\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta property=\"al:android:package\" content=\"{{meta.app_googleplay_id}}\">\n <meta property=\"al:android:app_name\" content=\"{{meta.app_name}}\">\n <meta property=\"og:title\" content=\"{{meta.app_title}}\" \/>\n <meta property=\"og:type\" content=\"website\" \/>\n <!-- App Twitter Cards -->\n <meta name=\"twitter:card\" content=\"app\">\n <meta name=\"twitter:site\" content=\"{{meta.app_twitter_uname}}\">\n <meta name=\"twitter:description\"\n content=\"{{meta.app_twitter_description}}\">\n <meta name=\"twitter:app:id:iphone\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:iphone\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:id:ipad\" content=\"{{meta.app_store_id}}\">\n <meta name=\"twitter:app:url:ipad\" content=\"freelancer:\/\/{{meta.app_url}}\">\n <meta name=\"twitter:app:name:googleplay\" content=\"{{meta.app_name}}\">\n <meta name=\"twitter:app:id:googleplay\" content=\"{{meta.app_googleplay_id}}\">\n <meta name=\"twitter:app:url:googleplay\" content=\"freelancer:\/\/{{meta.app_url}}\">\n ?meta.app_cards?}}\n \n {{!meta.exclude_google!{{!meta.exclude_all!<meta name=\"robots\" content=\"index, follow\"\/>!meta.exclude_all!}}!meta.exclude_google!}}\n {{?meta.exclude_google?<meta name=\"googlebot\" content=\"noindex, nofollow\"\/>?meta.exclude_google?}}\n {{?meta.exclude_all?<meta name=\"robots\" content=\"noindex, nofollow\"\/>?meta.exclude_all?}}\n <meta name=\"verify-v1\" content=\"TTmFSxUJxXuHsKl9kPGeYetHBfsjnO7s87WxaAha8NE=\"\/>\n <meta name=\"verify-v1\" content=\"9ejzgFxg7wuxHdyyiqmdTe3JQgBUfIVvdJiXlVRHkEw=\"\/>\n <meta name=\"google-site-verification\" content=\"Os01EUjriD5LgZ5VHZqf23SGdeCX-7g7dsi-8ekNBdk\"\/>\n <meta name=\"google-site-verification\" content=\"Xi9iryvGIjCbFdxBx5GjqMprKdhYIrOeKAgCSS_GEEs\"\/>\n <meta name=\"google-site-verification\" content=\"aUe2esuVVPvwLu9u_15cbwtL8CSU8cMP9ZtDNE_SNh8\"\/>\n <meta name=\"google-site-verification\" content=\"sPE5PAZlRuPYrymfB5FcOI7pq3dg9By1OVoH48jKvH8\" \/>\n <meta name=\"google-site-verification\" content=\"blpbKwfjw3TUdN5_daIUVWTIhFknZKMNUxkp5_QxXPk\" \/>\n <meta name=\"alexaVerifyID\" content=\"lOECm39vgYv4N9PwoW6nsSSLiUw\"\/>\n <meta name=\"y_key\" content=\"145378928393bc8d\"\/>\n <meta name=\"msvalidate.01\" content=\"756854B52F963132E377E441F92F1136\"\/>\n <meta property=\"fb:admins\" content=\"100000662403967\"\/>\n <meta name=\"robots\" content=\"noodp\"\/>\n \n {{%additional-meta%}}\n \n {{<rss\/links>}}\n \n <link rel=\"publisher\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>\n {{?meta.google+_author?<link rel=\"author\" href=\"http:\/\/plus.google.com\/+Freelancer\"\/>?meta.google+_author?}}\n <link itemprop=\"sameAs\" href=\"http:\/\/en.wikipedia.org\/wiki\/Freelancer.com\"\/>\n <link rel=\"icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\" type=\"image\/ico\"\/>\n <link rel=\"shortcut icon\" href=\"{{SSL_BASE_URL}}\/favicon.ico\"\/>\n {{!ON_FREEMARKET!\n {{#DOMAINS_INFO#{{?relative_canonical_url?<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{relative_canonical_url}}\"\/>?relative_canonical_url?}}{{!relative_canonical_url!<link rel=\"alternate\" hreflang=\"{{DOMAINS_INFO.__i.hreflang}}\" href=\"{{DOMAINS_INFO.__i.subdomain_name}}{{CUR_RELATIVE_URL}}\"\/>!relative_canonical_url!}}#DOMAINS_INFO#}}\n !ON_FREEMARKET!}}\n {{?meta.facebook_thumb?<link rel=\"image_src\" href=\"{{meta.facebook_thumb}}\"\/>?meta.facebook_thumb?}}\n {{?canonical_url?<link rel=\"canonical\" href=\"{{canonical_url}}\"\/>?canonical_url?}}\n {{?meta.mobile_url?<link rel=\"alternate\" media=\"only screen and (max-width:640px)\" href=\"{{meta.mobile_url}}\" \/>?meta.mobile_url?}}\n \n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\/\",\n \"@type\": \"Organization\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"http:\/\/www.freelancer.com\/\",\n \"logo\": \"http:\/\/www.freelancer.com\/static\/css\/images\/logo.jpg\",\n \"sameAs\" : [\n \"https:\/\/twitter.com\/freelancer\",\n \"https:\/\/www.facebook.com\/fansoffreelancer\",\n \"https:\/\/www.linkedin.com\/company\/freelancer-com\",\n \"https:\/\/plus.google.com\/+Freelancer\/posts\",\n \"https:\/\/instagram.com\/freelancerofficial\"\n ]\n }\n <\/script>\n <script type=\"application\/ld+json\">\n {\n \"@context\": \"http:\/\/schema.org\",\n \"@type\": \"WebSite\",\n \"name\": \"{{SITE_NAME}}\",\n \"url\": \"https:\/\/www.freelancer.com\"\n }\n <\/script>\n \n !app_page!}}\n \n <\/head>\n <body data-role=\"page\">\n \n {{!app_page!\n \n {{!hide_header!\n <div class=\"pinky-template\">\n {{?IS_AUTH?\n {{!hide_banner!\n <div class=\"important-announcement\" data-target=\"important-announcement\">\n {{<systemjs_module('verification-banner')>}}\n <\/div>\n !hide_banner!}}\n ?IS_AUTH?}}\n {{<header\/header>}}\n <\/div>\n !hide_header!}}\n \n <div class=\"{{!PINKY_PAGE!gaf-container main-container!PINKY_PAGE!}}{{?PINKY_PAGE?pinky-template?PINKY_PAGE?}}\">\n {{?PINKY_PAGE?<main id=\"main\" class=\"main-content\">?PINKY_PAGE?}}\n {{!PINKY_PAGE!<div id=\"main\" class=\"container\">!PINKY_PAGE!}}\n {{%page%}}\n {{!PINKY_PAGE!<\/div>!PINKY_PAGE!}}\n {{?PINKY_PAGE?<\/main>?PINKY_PAGE?}}\n <\/div>\n <div class=\"pinky-template\">\n {{!hide_footer!\n {{<footer\/footer>}}\n !hide_footer!}}\n \n {{?IS_AUTH?\n {{<systemjs_server_data('messaging-contacts', 'hideContactList', '{{?hide_contact_list?true?hide_contact_list?}}{{!hide_contact_list!false!hide_contact_list!}}')>}}\n {{<systemjs_server_data(\"messaging\", \"messagingABTests\", \"{{messagingABTests}}\")>}}\n {{<systemjs_server_data(\"messaging\", \"hideContactList\", \"{{hideContactList}}\")>}}\n {{!hide_contact_list!\n {{?abTestAngularContactList?\n <!-- Angular contact list -->\n <fl-messaging-contacts-new><\/fl-messaging-contacts-new>\n {{<systemjs_module(\"messaging-contacts-new\")>}}\n ?abTestAngularContactList?}}\n {{!abTestAngularContactList!\n {{<systemjs_module('messaging-contacts')>}}\n !abTestAngularContactList!}}\n <!-- instant chat section -->\n <fl-mute-modal><\/fl-mute-modal>\n <fl-messaging-chat class=\"chatbox-wrapper\"\n id=\"chatNG\"\n ng-controller=\"appController as ctrl\"\n fl-analytics-section=\"chat\"\n >\n <fl-chat-box\n ng-repeat=\"attributes in ctrl.chatboxes\"\n attributes=\"attributes\"\n sound-settings=\"ctrl.soundSettings\"\n ><\/fl-chat-box>\n <\/fl-messaging-chat>\n {{<systemjs_module(\"messaging-chat\")>}}\n <!-- end instant chat section -->\n <div id=\"contacts\" class=\"contacts\" data-state=\"hidden\" data-target=\"contacts\">\n {{!abTestAngularContactList!\n <header class=\"contacts-header\">\n <h2 class=\"contacts-header-title\">{{_Contact List_}}<\/h2>\n <\/header>\n !abTestAngularContactList!}}\n <\/div>\n !hide_contact_list!}}\n <div id=\"toast-notifications-wrapper\"><\/div>\n ?IS_AUTH?}}\n <\/div>\n \n <!-- FIXME: please get rid of that, that should be lazy loaded through SystemJS -->\n {{!hide_fb_modal!\n <div class=\"pinky-template\">\n {{<bootstrap\/fb-modal>}}\n <\/div>\n !hide_fb_modal!}}\n \n {{?IS_AUTH?\n <div class=\"pinky-template\">\n {{<recruiter\/robin>}}\n <\/div>\n ?IS_AUTH?}}\n \n {{?IS_AUTH?\n {{?free_trial_modal?\n {{!hideMembershipUpsellModal!\n {{<systemjs_module('membership-trial-modal')>}}\n !hideMembershipUpsellModal!}}\n ?free_trial_modal?}}\n ?IS_AUTH?}}\n \n <fl-modal-container class=\"pinky-template\"><\/fl-modal-container>\n \n <!-- JS SDKs: think twice before adding something here -->\n <!-- SHOULD NEVER EVER include synchronous scripts. -->\n {{<tracking\/google-analytics>}}\n {{<tracking\/adwords_remarketing>}}\n {{<tracking\/google-tag-manager>}}\n \n <!-- GLOBAL page data: for vars shared amongst multiple modules -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('flconfigs', 'sslBaseUrl', '{{(SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'languageCode', '{{(LANGUAGE_CODE|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cookieDomain', '{{(COOKIE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'siteName', '{{(SITE_DOMAIN|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'cdnUrls', '{{(CDN_URLS)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmSslBaseUrl', '{{(TM_SSL_BASE_URL|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'thmOrgId', '{{(thm_org_id|json_encode)}}')>}}\n {{<systemjs_server_data('flconfigs', 'userJobs', '{{?IS_AUTH?{{(USER_JOBS)}}?IS_AUTH?}}{{!IS_AUTH!null!IS_AUTH!}}')>}}\n {{<systemjs_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n {{<systemjs_angular_server_data('flconfigs', 'messagingABTests', {{?messagingABTests?'{{(messagingABTests)}}'?messagingABTests?}}{{!messagingABTests!'[]'!messagingABTests!}})>}}\n {{<systemjs_angular_server_data(\"flconfigs\", \"globalMatchmakingABTests\", {{?globalMatchmakingABTests?'{{[globalMatchmakingABTests]}}'?globalMatchmakingABTests?}}{{!globalMatchmakingABTests!'[]'!globalMatchmakingABTests!}})>}}\n <!-- GLOBAL SystemJS modules: only the *really* global modules go there -->\n <!-- KEEP THEIR NUMBER AS FEW AS POSSIBLE -->\n {{<systemjs_server_data('tracking', 'qtsHttpEndpoint', '{{(QTS_HTTP_ENDPOINT|json_encode)}}')>}}\n {{<systemjs_module('tracking')>}}\n {{<systemjs_module('tracking-performance')>}}\n {{!IS_STAGING!{{<systemjs_module('error-handler-legacy')>}}!IS_STAGING!}}\n \n !app_page!}}\n \n {{?app_page?\n- <fl-app><\/fl-app>\n+ <main style=\"height: 100vh\">\n+ <fl-app><\/fl-app>\n+ <\/main>\n <!-- app-server-environment are environment vars, NOT a mechanism to pass\n data between the server & the client. -->\n <!-- All app environment vars MUST BE static and MUST NOT change\n between pages and\/or users or things would break badly -->\n {{<systemjs_server_data('app-server-environment', 'cookieBase', '{{(COOKIE_BASE|json_encode)}}')>}}\n+ {{<systemjs_server_data('app-server-environment', 'notifyServer', '{{(NOTIFY_SERVER|json_encode)}}')>}}\n {{<systemjs_server_data('app-server-environment', 'flnBillingBaseUrl', '{{(FLN_BILLING_BASE_URL|json_encode)}}')>}}\n {{<systemjs_module('app')>}}\n {{<systemjs_module('{{(app_page)}}')>}}\n ?app_page?}}\n \n {{<systemjs_inject(\"true\")>}}\n <\/body>\n <\/html>\n"}]},{"id":"9153729","metadata":{"line:first":40},"oldPath":"package.json","currentPath":"package.json","awayPaths":[],"oldProperties":[],"newProperties":[],"type":"2","fileType":"1","commitHash":null,"addLines":"18","delLines":"5","hunks":[{"oldOffset":"1","newOffset":"1","oldLength":"1253","newLength":"1266","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":" {\n \"name\": \"gaf-frontend\",\n \"version\": \"4.0.0\",\n \"description\": \"GAF Frontend Pipeline\",\n \"author\": \"Freelancer.com\",\n \"private\": true,\n \"engines\": {\n \"node\": \">= 4.2\",\n \"npm\": \">= 3\"\n },\n \"scripts\": {\n \"start\": \"babel-node scripts\/build-assets\/build.js --watch\",\n \"lint\": \"npm run lint:js && npm run lint:ts && npm run lint:css\",\n \"lint:js\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules\",\n \"lint:jsnext\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --next\",\n \"lint:ts\": \"eslint -c public\/static\/modules\/.eslintrc_ts 'public\/static\/modules\/**\/*.ts' && tslint 'public\/static\/modules\/**\/*.ts'\",\n \"lint:nibble\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble\",\n \"lint:nibble:ts\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --ts\",\n \"lint:nibble:next\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:modules --nibble --next\",\n \"lint:css\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . lint:css\",\n \"test\": \"npm run build:production -- --core && ENABLE_COVERAGE=true karma start scripts\/build-assets\/karma.conf.js --browsers PhantomJS --single-run\",\n \"test:watch\": \"karma start scripts\/build-assets\/karma.conf.js --reporters nyan\",\n \"test:debug\": \"karma start scripts\/build-assets\/karma.conf.js --browsers Chrome\",\n \"test:showcoverage\": \"node -e 'require(\\\"open\\\")(\\\".\/scripts\/build-assets\/test\/coverage\/html\/index.html\\\")'\",\n \"build\": \"npm run build:production && npm run test && npm run build:legacy\",\n \"build:production\": \"babel-node scripts\/build-assets\/build.js --prod\",\n \"build:legacy\": \"grunt --gruntfile scripts\/build-assets\/legacy\/Gruntfile.js legacyOnly\",\n \"styles:critical\": \"NODE_TLS_REJECT_UNAUTHORIZED=0 gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . styles:critical\",\n \"patternlibrary\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . patternlibrary\",\n \"patternlibrary:watch\": \"gulp --gulpfile scripts\/build-assets\/gulpfile.js --cwd . watch:patternlibrary\",\n \"jspm:configure\": \"jspm config registries.gitlab.baseurl https:\/\/git.freelancer.com\/ && jspm config registries.gitlab.handler jspm-git\",\n \"jspm:update\": \"rm -rf public\/build\/jspm.* && mkdir -p public\/build && touch public\/build\/jspm.browser.js public\/build\/jspm.dev.js public\/build\/jspm.node.js && jspm install -y; if [ $? -ne 0 ]; then rm -rf public\/static\/jspm_packages; exit 1; fi\",\n \"postinstall\": \"npm run jspm:configure && npm run jspm:update\"\n },\n \"dependencies\": {\n \"@angular\/common\": \"2.2.4\",\n \"@angular\/compiler\": \"2.2.4\",\n \"@angular\/compiler-cli\": \"2.2.4\",\n \"@angular\/core\": \"2.2.4\",\n+ \"@angular\/http\": \"2.3.1\",\n \"@angular\/platform-browser\": \"2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"2.2.4\",\n \"@angular\/router\": \"3.2.4\",\n+ \"@ngrx\/core\": \"^1.2.0\",\n+ \"@ngrx\/store\": \"^2.2.1\",\n+ \"@ngrx\/store-devtools\": \"^3.2.3\",\n \"@types\/jasmine\": \"^2.2.33\",\n+ \"@types\/sockjs\": \"^0.3.30\",\n \"@types\/systemjs\": \"^0.19.30\",\n \"autoprefixer\": \"^6.3.7\",\n \"babel-eslint\": \"^6.1.2\",\n \"babel-plugin-transform-es2015-modules-systemjs\": \"^6.6.5\",\n \"babel-preset-es2015\": \"^6.14.0\",\n \"babel-preset-es2016\": \"^6.11.3\",\n \"babel-preset-es2017\": \"^6.14.0\",\n \"browser-sync\": \"2.10.1\",\n \"chalk\": \"^1.1.1\",\n \"check-dependencies\": \"^0.12.0\",\n \"cli-table\": \"^0.3.1\",\n \"codelyzer\": \"> 1.0.0-beta <1.1\",\n \"common-tags\": \"^0.0.3\",\n \"concat-with-sourcemaps\": \"^1.0.4\",\n \"core-js-builder\": \"^2.4.0\",\n \"critical\": \"^0.8.0\",\n \"cssnano\": \"^3.8.0\",\n \"cssurl\": \"^1.3.0\",\n \"del\": \"^2.2.2\",\n \"eslint\": \"~3.13.1\",\n \"eslint-config-airbnb-base\": \"~11.0.1\",\n \"eslint-import-resolver-jspm\": \"^2.1.0\",\n \"eslint-plugin-fl-forward\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-fl-forward.git#master\",\n \"eslint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/angular\/eslint-plugin-gaf.git#v0.4.0\",\n \"eslint-plugin-import\": \"~2.2.0\",\n \"eslint-plugin-jasmine\": \"~2.2.0\",\n \"eslint-plugin-jquery\": \"^1.1.0\",\n \"eslint-plugin-piggyback\": \"~2.0.0\",\n \"eslint-plugin-promise\": \"~3.4.0\",\n \"eslint-watch\": \"^2.1.14\",\n \"fg-loadcss\": \"^1.2.0\",\n \"filesize\": \"^3.3.0\",\n \"glob\": \"^7.0.3\",\n \"grunt\": \"^0.4.5\",\n \"grunt-cachebuster\": \"~0.1.5\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-concurrent\": \"~2.0.3\",\n \"grunt-contrib-clean\": \"~0.6.0\",\n \"grunt-contrib-cssmin\": \"~0.13.0\",\n \"grunt-contrib-requirejs\": \"^0.4.4\",\n \"grunt-gulp\": \"~0.1.0\",\n \"grunt-html2js\": \"~0.3.4\",\n \"grunt-karma\": \"~0.12.0\",\n \"grunt-threepio\": \"git+https:\/\/git.freelancer.com\/translations\/grunt-threepio.git#v0.9.12\",\n \"gulp\": \"^3.9.0\",\n \"gulp-cached\": \"^1.1.0\",\n \"gulp-changed\": \"^1.3.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-debug\": \"^2.1.2\",\n \"gulp-filter\": \"^3.0.1\",\n \"gulp-if\": \"^2.0.0\",\n \"gulp-less\": \"^3.0.5\",\n \"gulp-load-plugins\": \"^1.1.0\",\n \"gulp-ng-annotate\": \"~1.1.0\",\n \"gulp-postcss\": \"^6.1.0\",\n \"gulp-progeny\": \"^0.3.1\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-uglify\": \"~1.0.1\",\n \"imagemin\": \"^5.2.2\",\n \"imagemin-gifsicle\": \"^5.1.0\",\n \"imagemin-mozjpeg\": \"^6.0.0\",\n \"imagemin-optipng\": \"^5.2.1\",\n \"imagemin-pngquant\": \"^5.0.0\",\n \"imagemin-svgo\": \"^5.2.0\",\n \"isparta\": \"^4.0.0\",\n \"jasmine-core\": \"^2.3.4\",\n \"jspm\": \"0.17.0-beta.29\",\n \"jspm-git\": \"0.7.0-beta.1\",\n \"karma\": \"^1.3.0\",\n \"karma-babel-preprocessor\": \"^6.0.1\",\n \"karma-chrome-launcher\": \"^2.0.0\",\n \"karma-coverage\": \"^1.1.1\",\n \"karma-firefox-launcher\": \"^1.0.0\",\n \"karma-ievms\": \"^0.1.0\",\n \"karma-jasmine\": \"^1.0.2\",\n \"karma-jspm\": \"^2.2.0\",\n \"karma-junit-reporter\": \"^1.1.0\",\n \"karma-mocha-reporter\": \"^2.2.0\",\n \"karma-ng-html2js-preprocessor\": \"^1.0.0\",\n \"karma-nyan-reporter\": \"^0.2.4\",\n \"karma-phantomjs-launcher\": \"^1.0.2\",\n \"karma-quiet-reporter\": \"^0.1.2\",\n \"karma-script-launcher\": \"^1.0.0\",\n \"kss\": \"^2.4.0\",\n \"less\": \"^2.6.1\",\n \"less-plugin-clean-css\": \"^1.5.1\",\n \"main-bower-files\": \"~2.11.1\",\n \"merge-stream\": \"^1.0.0\",\n \"mkdirp\": \"^0.5.1\",\n \"ng-annotate\": \"^1.0.2\",\n+ \"ng2-redux\": \"^4.2.1\",\n \"open\": \"0.0.5\",\n \"phantomjs-prebuilt\": \"^2.1.4\",\n \"postcss\": \"^5.2.6\",\n \"postcss-less\": \"^0.10.0\",\n \"postcss-reporter\": \"^1.3.3\",\n \"postcss-url\": \"^5.1.2\",\n+ \"redux\": \"^3.6.0\",\n \"request\": \"^2.73.0\",\n- \"rxjs\": \"^5.0.0-beta.12\",\n+ \"rxjs\": \"^5.0.0-rc.4\",\n \"sane\": \"^1.4.1\",\n \"stylelint\": \"^7.6.0\",\n \"stylelint-plugin-gaf\": \"git+https:\/\/git.freelancer.com\/ssinatra\/stylelint-plugin-gaf.git#v1.0.0\",\n \"threepio\": \"git+https:\/\/git.freelancer.com\/translations\/threepio.git#v0.9.12\",\n \"tslint\": \"^3.15.1\",\n \"typescript\": \"~2.0.10\",\n \"typescript-eslint-parser\": \"^1.0.0\",\n \"uglify-js\": \"^2.7.3\",\n \"whatwg-fetch\": \"^1.0.0\",\n \"yargs\": \"^3.31.0\",\n \"zone.js\": \"^0.6.26\"\n },\n \"devDependencies\": {\n \"babel-cli\": \"^6.14.0\",\n- \"eslint-nibble\": \"~3.1.0\"\n+ \"eslint-nibble\": \"~3.1.0\",\n+ \"ngrx-store-freeze\": \"^0.1.6\"\n },\n \"babel\": {\n \"presets\": [\n \"es2015\",\n \"es2016\",\n \"es2017\"\n ]\n },\n \"jspm\": {\n \"directories\": {\n \"baseURL\": \"public\/static\",\n \"lib\": \"public\/static\/modules\",\n \"packages\": \"public\/static\/jspm_packages\"\n },\n \"configFiles\": {\n \"jspm\": \"public\/build\/jspm.config.js\",\n \"jspm:browser\": \"public\/build\/jspm.browser.js\",\n \"jspm:dev\": \"public\/build\/jspm.dev.js\",\n \"jspm:node\": \"public\/build\/jspm.node.js\"\n },\n \"dependencies\": {\n \"@angular\/forms\": \"npm:@angular\/forms@2.2.4\",\n \"@angular\/http\": \"npm:@angular\/http@2.2.4\",\n \"@angular\/router\": \"npm:@angular\/router@3.2.4\",\n \"@angular\/upgrade\": \"npm:@angular\/upgrade@2.2.4\",\n \"angular\": \"github:angular\/bower-angular@1.3.20\",\n \"angular-google-maps\": \"npm:angular-google-maps@^2.4.0\",\n \"angular-messages\": \"github:angular\/bower-angular-messages@1.3.20\",\n \"angular-moment\": \"github:urish\/angular-moment@0.10.3\",\n \"angular-perfect-scrollbar-2\": \"npm:angular-perfect-scrollbar-2@1.2.4\",\n \"angular-resource\": \"github:angular\/bower-angular-resource@1.3.20\",\n \"angular-route\": \"github:angular\/bower-angular-route@1.3.20\",\n \"angular-sanitize\": \"github:angular\/bower-angular-sanitize@1.3.20\",\n \"angular-simple-logger\": \"npm:angular-simple-logger@^0.1.7\",\n \"angular-slider\": \"github:Jook1949\/angular-slider@0.2.16\",\n \"autosize\": \"npm:autosize@3.0.17\",\n \"backbone\": \"github:jashkenas\/backbone@0.5.3\",\n \"backbone-localstorage\": \"github:jeromegn\/Backbone.localStorage@1.1.16\",\n \"bootstrap\": \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\",\n \"checklist-model\": \"npm:checklist-model@0.2.4\",\n \"clipboard\": \"npm:clipboard@1.5.12\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"common-tags\": \"github:laurentgoudet\/common-tags@0.1.0\",\n \"cropperjs\": \"github:fengyuanchen\/cropperjs@^0.8.1\",\n \"deep-link.js\": \"github:timseverien\/deep-link.js@0.0.5\",\n \"feedback.js\": \"gitlab:angular\/feedback.js@1.1.0\",\n \"fl-angular\": \"gitlab:angular\/fl-angular@4.5.10\",\n \"fl-angular-bootstrap\": \"gitlab:angular\/fl-bootstrap-v2@es6\",\n \"fl-forward\": \"gitlab:angular\/fl-forward@0.8.0\",\n \"fuse.js\": \"npm:fuse.js@2.5.0\",\n \"google-maps\": \"npm:google-maps@3.2.1\",\n \"hopscotch\": \"github:linkedin\/hopscotch@0.2.5\",\n \"html2canvas\": \"npm:html2canvas@0.5.0-beta4\",\n \"imagesloaded\": \"npm:imagesloaded@^4.1.1\",\n \"isotope-layout\": \"npm:isotope-layout@^3.0.1\",\n \"jquery\": \"github:components\/jquery@1.10.2\",\n \"jquery-annotate\": \"gitlab:angular\/jquery-annotate@master\",\n \"jquery-ba-outside-events\": \"github:cowboy\/jquery-outside-events@v1.1\",\n \"jquery-datatables\": \"github:DataTables\/DataTables@RELEASE_1_7_6\",\n \"jquery-datatables-bootstrap-pagination\": \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\",\n \"jquery-fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\",\n \"jquery-fileupload-ui\": \"gitlab:angular\/jquery-fileupload-ui@master\",\n \"jquery-hoverIntent\": \"github:briancherne\/jquery-hoverIntent@1.7.0\",\n \"jquery-iframe-transport\": \"gitlab:angular\/jquery-iframe-transport@master\",\n \"jquery-pagination\": \"gitlab:angular\/jquery-pagination@master\",\n \"jquery-slimscroll\": \"github:rochal\/jQuery-slimScroll@1.3.7\",\n \"jquery-star-rating\": \"gitlab:angular\/jquery-star-rating@master\",\n \"jquery-ui-widget\": \"gitlab:angular\/jquery-ui-widget@1.8.23\",\n \"jquery-validate\": \"github:jzaefferer\/jquery-validation@1.11.1\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"lodash\": \"npm:lodash@^4.16.5\",\n \"lodash-es\": \"npm:lodash-es@4.14.1\",\n \"mailcheck\": \"github:mailcheck\/mailcheck@1.1.1\",\n \"modernizr\": \"github:Modernizr\/Modernizr@2.6.2\",\n \"moment\": \"npm:moment@2.15.1\",\n \"ng-infinite-scroll\": \"github:sroze\/ngInfiniteScroll@1.3.0\",\n+ \"ng2-redux\": \"npm:ng2-redux@4.2.1\",\n \"prism\": \"github:PrismJS\/prism@1.5.1\",\n \"moment-timezone\": \"npm:moment-timezone@^0.5.5\",\n \"recaptcha_ajax\": \"github:brunomacf\/recaptcha_ajax@master\",\n \"rome\": \"npm:rome@2.1.22\",\n \"select2\": \"github:select2\/select2@4.0.3\",\n \"session.js\": \"github:codejoust\/session.js@0.4.1\",\n \"sockjs\": \"github:sockjs\/sockjs-client@0.3.4\",\n \"stellar\": \"github:markdalgleish\/stellar.js@0.6.2\",\n \"svgPieTimer\": \"github:agrimsrud\/svgPieTimer.js@master\",\n \"tinymce\": \"github:tinymce\/tinymce-dist@4.4.1\",\n \"trunk8\": \"github:rviscomi\/trunk8@1.3.3\",\n \"underscore\": \"npm:underscore@1.3.0\",\n \"video-js\": \"npm:video.js@5.12.6\",\n \"web-animations-js\": \"github:web-animations\/web-animations-js@2.1.5\"\n },\n \"devDependencies\": {\n \"angular-mocks\": \"github:angular\/bower-angular-mocks@1.3.20\",\n \"angularjs-annotate\": \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\",\n \"babel\": \"npm:systemjs-plugin-babel@0.0.15\",\n \"cluster\": \"npm:jspm-nodelibs-cluster@^0.2.0\",\n+ \"https\": \"github:jspm\/nodelibs-https@^0.2.0-alpha\",\n \"plugin-css\": \"github:systemjs\/plugin-css@0.1.23\",\n \"fln-less\": \"gitlab:angular\/plugin-fln-less@1.0.13\",\n \"http\": \"github:jspm\/nodelibs-http@^0.2.0-alpha\",\n \"punycode\": \"npm:jspm-nodelibs-punycode@^0.2.0\",\n \"text\": \"github:systemjs\/plugin-text@0.0.9\",\n \"transform-fl-forward\": \"gitlab:angular\/babel-plugin-transform-fl-forward@1.4.0\",\n \"ts\": \"github:frankwallis\/plugin-typescript@5.1.2\",\n \"urijs\": \"npm:urijs@1.18.1\",\n \"url\": \"github:jspm\/nodelibs-url@^0.2.0-alpha\"\n },\n \"peerDependencies\": {\n \"@angular\/common\": \"npm:@angular\/common@2.2.4\",\n \"@angular\/compiler\": \"npm:@angular\/compiler@2.2.4\",\n \"@angular\/core\": \"npm:@angular\/core@2.2.4\",\n \"@angular\/platform-browser\": \"npm:@angular\/platform-browser@2.2.4\",\n \"@angular\/platform-browser-dynamic\": \"npm:@angular\/platform-browser-dynamic@2.2.4\",\n \"assert\": \"npm:jspm-nodelibs-assert@^0.2.0\",\n \"buffer\": \"github:jspm\/nodelibs-buffer@^0.2.0-alpha\",\n \"child_process\": \"npm:jspm-nodelibs-child_process@^0.2.0\",\n \"constants\": \"github:jspm\/nodelibs-constants@^0.2.0-alpha\",\n \"crypto\": \"github:jspm\/nodelibs-crypto@^0.2.0-alpha\",\n \"events\": \"github:jspm\/nodelibs-events@^0.2.0-alpha\",\n \"fs\": \"github:jspm\/nodelibs-fs@^0.2.0-alpha\",\n \"module\": \"npm:jspm-nodelibs-module@^0.2.0\",\n \"net\": \"npm:jspm-nodelibs-net@^0.2.0\",\n \"os\": \"github:jspm\/nodelibs-os@^0.2.0-alpha\",\n \"path\": \"github:jspm\/nodelibs-path@^0.2.0-alpha\",\n \"process\": \"github:jspm\/nodelibs-process@^0.2.0-alpha\",\n+ \"redux\": \"npm:redux@3.6.0\",\n \"reflect-metadata\": \"npm:reflect-metadata@0.1.8\",\n- \"rxjs\": \"npm:rxjs@5.0.0-beta.12\",\n+ \"rxjs\": \"npm:rxjs@5.0.0-rc.4\",\n \"stream\": \"npm:jspm-nodelibs-stream@^0.2.0\",\n \"string_decoder\": \"npm:jspm-nodelibs-string_decoder@^0.2.0\",\n \"timers\": \"github:jspm\/nodelibs-timers@^0.2.0-alpha\",\n \"util\": \"github:jspm\/nodelibs-util@^0.2.0-alpha\",\n \"vm\": \"github:jspm\/nodelibs-vm@^0.2.0-alpha\",\n \"zone.js\": \"npm:zone.js@^0.6.21\"\n },\n \"overrides\": {\n \"github:DataTables\/DataTables@RELEASE_1_7_6\": {\n \"format\": \"global\",\n \"main\": \"media\/js\/jquery.dataTables.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"media\/js\/jquery.dataTables.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:PrismJS\/prism@1.5.1\": {\n \"files\": [\n \"components\/**\/*.js\",\n \"plugins\/**\/*\",\n \"themes\/*.css\",\n \"prism.js\"\n ]\n },\n \"github:angular\/bower-angular-animate@1.3.20\": {\n \"main\": \"angular-animate\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-animate.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-touch@1.3.20\": {\n \"main\": \"angular-touch\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n- \"angular-touch.js\": {\n+ \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n- \"format\": \"global\"\n+ \"globals\": {\n+ \"angular\": \"angular\"\n+ }\n }\n }\n },\n \"github:angular\/bower-angular@1.3.20\": {\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"github:angular\/bower-angular-sanitize@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-sanitize.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-messages@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-messages.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-mocks@1.3.20\": {\n \"main\": \"angular-mocks\",\n \"dependencies\": {\n \"angular\": \"github:angular\/bower-angular@^1.3.0\"\n },\n \"meta\": {\n \"angular-mocks.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-resource@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-resource.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:angular\/bower-angular-route@1.3.20\": {\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"angular-route.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:components\/jquery@1.10.2\": {\n \"format\": \"cjs\"\n },\n \"github:select2\/select2@4.0.3\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"github:socketio\/socket.io-client@1.7.2\": {\n \"dependencies\": {}\n },\n \"github:sroze\/ngInfiniteScroll@1.3.0\": {\n \"directories\": {\n \"lib\": \"build\"\n },\n \"main\": \"ng-infinite-scroll\",\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.2.0\"\n },\n \"meta\": {\n \"ng-infinite-scroll.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"github:tinymce\/tinymce-dist@4.4.1\": {\n \"format\": \"global\",\n \"main\": \"tinymce\",\n \"meta\": {\n \"tinymce.min.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"tinymce.js\": {\n \"exports\": \"tinymce\",\n \"format\": \"global\"\n },\n \"plugins\/advlist\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/anchor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autolink\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autoresize\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/autosave\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/bbcode\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/charmap\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/code\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/colorpicker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/contextmenu\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/directionality\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/emoticons\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullpage\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/fullscreen\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/hr\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/image\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/importcss\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/insertdatetime\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/layer\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/legacyoutput\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/link\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/lists\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/media\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/nonbreaking\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/noneditable\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/pagebreak\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/paste\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/preview\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/print\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/save\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/searchreplace\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/spellchecker\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/tabfocus\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/table\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/template\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textcolor\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/textpattern\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualblocks\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/visualchars\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"plugins\/wordcount\/plugin.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n },\n \"themes\/modern\/theme.js\": {\n \"deps\": [\n \"tinymce\"\n ],\n \"format\": \"global\"\n }\n }\n },\n \"gitlab:angular\/jquery-datatables-bootstrap-pagination@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery-wrapper\": \"github:components\/jquery@1.10.2\",\n \"jquery.dataTables.min\": \"github:DataTables\/DataTables@RELEASE_1_7_6\"\n }\n },\n \"npm:@angular\/common@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/compiler@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/core@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/forms@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/http@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser-dynamic@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/platform-browser@2.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:@angular\/router@3.2.4\": {\n \"main\": \"index.js\"\n },\n \"npm:angular-easyfb@1.5.1\": {\n \"meta\": {\n \"src\/angular-easyfb.js\": {\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:jzaefferer\/jquery-validation@1.11.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.validate.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.validate.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-annotate@master\": {\n \"format\": \"global\",\n \"main\": \"index.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:briancherne\/jquery-hoverIntent@1.7.0\": {\n \"format\": \"global\",\n \"main\": \"jquery.hoverIntent.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.hoverIntent.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rochal\/jQuery-slimScroll@1.3.7\": {\n \"format\": \"global\",\n \"main\": \"jquery.slimscroll.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.slimscroll.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:mailcheck\/mailcheck@1.1.1\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"src\/mailcheck.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:cowboy\/jquery-outside-events@v1.1\": {\n \"format\": \"global\",\n \"main\": \"jquery.ba-outside-events.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.ba-outside-events.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:rviscomi\/trunk8@1.3.3\": {\n \"format\": \"global\",\n \"main\": \"trunk8.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"trunk8.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:markdalgleish\/stellar.js@0.6.2\": {\n \"format\": \"global\",\n \"main\": \"jquery.stellar.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"jquery.stellar.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:Modernizr\/Modernizr@2.6.2\": {\n \"format\": \"global\",\n \"main\": \"modernizr.js\",\n \"meta\": {\n \"modernizr.js\": {\n \"exports\": \"Modernizr\",\n \"format\": \"global\"\n }\n }\n },\n \"github:brunomacf\/recaptcha_ajax@master\": {\n \"format\": \"global\",\n \"meta\": {\n \"recaptcha_ajax.js\": {\n \"exports\": \"Recaptcha\",\n \"format\": \"global\"\n }\n }\n },\n \"github:linkedin\/hopscotch@0.2.5\": {\n \"main\": \"dist\/js\/hopscotch.js\"\n },\n \"github:jashkenas\/backbone@0.5.3\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"backbone.js\": {\n \"deps\": [\n \"jquery\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload@5.11.2\": {\n \"format\": \"amd\",\n \"main\": \"jquery.fileupload.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"jquery.ui.widget\": \"gitlab:angular\/jquery-ui-widget@^1.8.23\"\n }\n },\n \"gitlab:angular\/jquery-ui-widget@1.8.23\": {\n \"format\": \"amd\",\n \"main\": \"jquery.ui.widget.js\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"gitlab:angular\/bootstrap-2.32-custom@2.32-custom\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"bootstrap.2-32.dev.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"github:sockjs\/sockjs-client@0.3.4\": {\n \"main\": \"dist\/sockjs\"\n },\n \"github:laurentgoudet\/common-tags@0.1.0\": {\n \"main\": \"index.js\"\n },\n \"github:codejoust\/session.js@0.4.1\": {\n \"main\": \"session.js\",\n \"format\": \"global\",\n \"meta\": {\n \"session.js\": {\n \"exports\": \"session\"\n }\n }\n },\n \"gitlab:angular\/feedback.js@1.1.0\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"underscore\": \"npm:underscore@^1.3.0\"\n },\n \"meta\": {\n \"index.js\": {\n \"exports\": \"Feedback\",\n \"format\": \"global\",\n \"deps\": [\n \"jquery\",\n \"html2canvas\",\n \"session.js\",\n \"underscore\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\",\n \"html2canvas\": \"html2canvas\",\n \"session\": \"session.js\",\n \"_\": \"underscore\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-fileupload-fp@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"canvas-to-blob\": \"npm:blueimp-canvas-to-blob@1.0.0\",\n \"jquery-fileupload\": \"gitlab:angular\/jquery-fileupload@5.11.2\"\n }\n },\n \"gitlab:angular\/jquery-fileupload-ui@master\": {\n \"format\": \"amd\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\",\n \"tmpl\": \"npm:blueimp-tmpl@2.1.0\",\n \"load-image\": \"npm:blueimp-load-image@1.1.3\",\n \"jquery.fileupload-fp\": \"gitlab:angular\/jquery-fileupload-fp@master\"\n }\n },\n \"gitlab:angular\/jquery-star-rating@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"gitlab:angular\/jquery-pagination@master\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n },\n \"meta\": {\n \"format\": \"global\",\n \"index.js\": {\n \"deps\": [\n \"jquery\"\n ],\n \"globals\": {\n \"jQuery\": \"jquery\"\n }\n }\n }\n },\n \"npm:angular-google-maps@2.4.1\": {\n \"registry\": \"jspm\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\",\n \"js-rich-marker\": \"github:MikaFima\/js-rich-marker\",\n \"lodash\": \"npm:lodash@^4.16.5\"\n },\n \"format\": \"global\",\n \"meta\": {\n \"dist\/angular-google-maps.js\": {\n \"format\": \"global\",\n \"deps\": [\n \"angular\",\n \"lodash\"\n ],\n \"globals\": {\n \"angular\": \"angular\",\n \"_\": \"lodash\"\n }\n }\n }\n },\n \"npm:angular@1.6.1\": {\n \"format\": \"global\",\n \"jspmNodeConversion\": false,\n \"main\": \"angular\",\n \"meta\": {\n \"angular.js\": {\n \"exports\": \"angular\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:debug@2.6.0\": {\n \"main\": \".\/src\/browser.js\",\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\",\n \"map\": {\n \".\/browser.js\": {\n \"node\": \".\/src\/node.js\"\n },\n \".\/node.js\": {\n \"browser\": \".\/src\/browser.js\"\n },\n \"fs\": \"@node\/fs\",\n \"net\": \"@node\/net\",\n \"tty\": \"@node\/tty\",\n \"util\": \"@node\/util\"\n }\n },\n \"npm:esprima@2.7.3\": {\n \"jspmNodeConversion\": false\n },\n \"npm:inherits@2.0.3\": {\n \"ignore\": [\n \"test.js\"\n ]\n },\n \"npm:lodash@4.17.4\": {\n \"map\": {\n \"buffer\": \"@empty\",\n \"process\": \"@empty\"\n }\n },\n \"npm:moment@2.15.1\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:ms@0.7.2\": {\n \"jspmNodeConversion\": false,\n \"format\": \"cjs\"\n },\n \"npm:perfect-scrollbar@0.6.16\": {\n \"dependencies\": {\n \"jquery\": \"github:components\/jquery@^1.10.2\"\n }\n },\n \"npm:reflect-metadata@0.1.8\": {\n \"jspmNodeConversion\": false,\n \"map\": {\n \"crypto\": {\n \"node\": \"@node\/crypto\",\n \"default\": \"@empty\"\n }\n }\n },\n \"github:agrimsrud\/svgPieTimer.js@master\": {\n \"format\": \"global\",\n \"main\": \"svgPieTimer.js\",\n \"meta\": {\n \"svgPieTimer.js\": {\n \"exports\": \"svgPieTimer\",\n \"format\": \"global\"\n }\n }\n },\n \"npm:svgo@0.7.1\": {\n \"meta\": {\n \"lib\/svgo\/config.js\": {\n \"deps\": [\n \"..\/..\/plugins\/removeDoctype\",\n \"..\/..\/plugins\/removeXMLProcInst\",\n \"..\/..\/plugins\/removeComments\",\n \"..\/..\/plugins\/removeMetadata\",\n \"..\/..\/plugins\/removeEditorsNSData\",\n \"..\/..\/plugins\/cleanupAttrs\",\n \"..\/..\/plugins\/minifyStyles\",\n \"..\/..\/plugins\/convertStyleToAttrs\",\n \"..\/..\/plugins\/cleanupIDs\",\n \"..\/..\/plugins\/removeRasterImages\",\n \"..\/..\/plugins\/removeUselessDefs\",\n \"..\/..\/plugins\/cleanupNumericValues\",\n \"..\/..\/plugins\/cleanupListOfValues\",\n \"..\/..\/plugins\/convertColors\",\n \"..\/..\/plugins\/removeUnknownsAndDefaults\",\n \"..\/..\/plugins\/removeNonInheritableGroupAttrs\",\n \"..\/..\/plugins\/removeUselessStrokeAndFill\",\n \"..\/..\/plugins\/removeViewBox\",\n \"..\/..\/plugins\/cleanupEnableBackground\",\n \"..\/..\/plugins\/removeHiddenElems\",\n \"..\/..\/plugins\/removeEmptyText\",\n \"..\/..\/plugins\/convertShapeToPath\",\n \"..\/..\/plugins\/moveElemsAttrsToGroup\",\n \"..\/..\/plugins\/moveGroupAttrsToElems\",\n \"..\/..\/plugins\/collapseGroups\",\n \"..\/..\/plugins\/convertPathData\",\n \"..\/..\/plugins\/convertTransform\",\n \"..\/..\/plugins\/removeEmptyAttrs\",\n \"..\/..\/plugins\/removeEmptyContainers\",\n \"..\/..\/plugins\/mergePaths\",\n \"..\/..\/plugins\/removeUnusedNS\",\n \"..\/..\/plugins\/transformsWithOnePath\",\n \"..\/..\/plugins\/sortAttrs\",\n \"..\/..\/plugins\/removeTitle\",\n \"..\/..\/plugins\/removeDesc\",\n \"..\/..\/plugins\/removeDimensions\",\n \"..\/..\/plugins\/removeAttrs\",\n \"..\/..\/plugins\/addClassesToSVGElement\",\n \"..\/..\/plugins\/removeStyleElement\",\n \"..\/..\/plugins\/removeXMLNS\",\n \"..\/..\/plugins\/removeElementsByAttr\",\n \"..\/..\/plugins\/addAttributesToSVGElement\"\n ]\n }\n }\n },\n \"npm:clipboard@1.5.12\": {\n \"main\": \"dist\/clipboard.js\"\n },\n \"github:laurentgoudet\/babel-plugin-angularjs-annotate@0.5.1-build2\": {\n \"registry\": \"npm\"\n },\n \"github:Jook1949\/angular-slider@0.2.16\": {\n \"format\": \"global\",\n \"dependencies\": {\n \"angular\": \"^1.3.0\"\n },\n \"meta\": {\n \"slider.js\": {\n \"deps\": [\n \"angular\"\n ],\n \"globals\": {\n \"angular\": \"angular\"\n }\n }\n }\n },\n \"github:frankwallis\/plugin-typescript@5.1.2\": {\n \"dependencies\": {\n \"typescript\": \"npm:typescript@2.0.8\"\n }\n },\n \"npm:typescript@2.0.8\": {\n \"browser\": {},\n \"map\": {\n \"buffer\": \"@empty\",\n \"child_process\": \"@empty\",\n \"fs\": \"@empty\",\n \"path\": \"@empty\",\n \"process\": \"@empty\",\n \"readline\": \"@empty\"\n }\n },\n \"npm:video.js@5.12.6\": {\n \"main\": \"dist\/video.js\",\n \"meta\": {\n \"*.css\": {\n \"loader\": \"plugin-css\"\n }\n }\n }\n }\n }\n }\n"}]},{"id":"9153728","metadata":{"line:first":1},"oldPath":null,"currentPath":"http.service.ts","awayPaths":[],"oldProperties":[],"newProperties":{"unix:filemode":"100644"},"type":"1","fileType":"1","commitHash":null,"addLines":"20","delLines":"0","hunks":[{"oldOffset":"0","newOffset":"1","oldLength":"0","newLength":"20","addLines":null,"delLines":null,"isMissingOldNewline":null,"isMissingNewNewline":null,"corpus":"+@Injectable()\n+export class CustomHttp extends Http {\n+ constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) {\n+ super(backend, defaultOptions);\n+ }\n+\n+ request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> {\n+ console.log('request...');\n+ return super.request(url, options).catch(res => {\n+ \/\/ do something\n+ }); \n+ }\n+\n+ get(url: string, options?: RequestOptionsArgs): Observable<Response> {\n+ console.log('get...');\n+ return super.get(url, options).catch(res => {\n+ \/\/ do something\n+ });\n+ }\n+}\n"}]}],"properties":{"arc.staging":{"status":"repository.unconfigured","refs":[]},"arc:lint-excuse":"meh","local:commits":{"7bb32a56dc14bf77df38e880ecafa17a048780d6":{"commit":"7bb32a56dc14bf77df38e880ecafa17a048780d6","tree":"c45e28197998ee36afa19a50bdd24b974d5ac187","parents":["4c0de6fd7910782442ddcd1fed1973aae5546343"],"time":"1485261741","author":"Laurent Goudet","summary":"ngrx mvp","message":"ngrx mvp\n\nSummary: WIP\n\nTest Plan: foo\n\nReviewers: O6 Core GAF (Frontend)!, O1 Core GAF (Backend)!, #core_gaf_frontend!, ssinatra, gcowan\n\nSubscribers:\n\nJIRA Issues:","authorEmail":"laurent@freelancer.com"}}},"authorName":"Laurent Goudet","authorEmail":"laurent@freelancer.com"}}}